C语言中指针与数组的关系

C语言中指针与数组的关系

int *numbers[4] ={1,2,3,4};
int *p = (int *)(&numbers +1);
NSLog(@"%d", *(p-1));//结果 4
    
  • 为什么结果是 4?

    • 1.&numbers是指向数组的整个指针,并不是指向数组的第0个元素地址,(顺便复习一下数组的指针和数组的第0个元素,是相同的地址)
    • 2.所以&numbers的跨度是整个数组,也就是说numbers数组的跨度为0-16位(int 占用4个字符),所以输出的就是4

指针p的加减法运算

  • 指针p + N
    • p里面存储的地址值 + N * 指针所指向类型的占用字节数
  • 指针p - N
    • p里面存储的地址值 - N * 指针所指向类型的占用字节数

数组名

  • 存储的是数组首元素的地址
  • 等价于:一个指向数组首元素的指针
  • 数组名 + 1 的跨度:数组首元素的占用字节数

其他结论

  • &num + 1的跨度:num的占用字节数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,812评论 3 44
  • 1.c语言中,有时需要使用只读数组,也就是程序从数组中读取数值,但是程序不向数组中写数据,在这种情况下声明并初始化...
    田亢阅读 4,340评论 0 0
  • 指针经典题 思考:以下小程序,输出结果是多少? 思路分析 首先分析一维数组 numbers : 存储的是数组首元素...
    zhazha阅读 3,434评论 1 3
  • C语言指针的总结 1. 变量 不同类型的变量在内存中占据不同的字节空间。 内存中存储数据的最小基本单位是字节,每一...
    xx_cc阅读 9,343评论 11 39
  • 2016年结束,也意味着我的24岁告一段落。回家街坊四邻问起年龄,要答“年儿后(春节后)就26啦。”为什么不是25...
    徐疯疯爱吃鱼阅读 5,851评论 0 0