指针 数组 基础篇(最终章)

本文深入探讨了C语言中的指针,包括指针变量的地址操作、指针常量、NULL指针、void *类型以及函数和数组指针的使用。同时,文章也讲解了数组的概念,强调了数组名在不同情况下的行为,以及数组与指针的区别,如在编译引用步骤和初始化时的不同处理。
摘要由CSDN通过智能技术生成

本文主要讲解指针的使用。

指针环节:

  • 指针变量存储的值都是些地址。

      tip:当你直接往一地址处写入数据时,需要先强制转换,比如地址0xF000FF00,因为它是一个字面值常量,类型为整形,需要先转换为指针类型:

unsigned char *p = (unsigned char *)0xF000FF00;
*p=11;

    或者直接写成  * (unsigned char *)0xF000FF00 = 11;

  • 用sizeof 求指针变量类型的大小,可以知道机器是32bit还是64bit的。
  • 指针变量可以作为左值,并不因为它们是指针,而是因为它们也是变量。指针变量的类型为指针类型,所以作为左值时,等号右边的结果也理应是指针类型。《c和指针》6.7节有个例子:
int a;
int *p = &a;

*p = 10 - *p;  //正确
p = 10 - *p;   //错误,因为它表示把一个整形数值(10-*p)存储于指针变量中
  • 指针常量:pointer to const . 指向常量的指针变量。指针变量可修改,指向的对象不可修改。口头上指针常量说的比较多,方便大家使用,记住就行了,而常量指针用的少,可忽略。
  • NULL指针:一个特殊的指针变量,其并未指向任何东西。
  • void * :标准规定一个void *指针可以转换为其它任何类型的指针。老式的编译器可能需要你强制转换,比如:
int *ptr = (int *)malloc(100); //old compiler, 100 bytes allocated.
int *ptr = malloc(100);  //new compiler

    因为void * 特别灵活,所以在内存操作函数中用的非常多(malloc、memset、memcpy等等)。

  • 函数指针
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值