objective-c - 关于C语言指针的问题
黄舟
黄舟 2017-04-21 11:17:34
[iOS讨论组]

C语言指针问题 下面代码为什么第二个数字是5呢?

int a[5] = {1,2,3,4,5};
int *p = (int *)(&a+1);
NSLog(@"%d,%d", *(a+1), *(p-1));
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
PHP中文网

一楼答主写的很好,做点扩展

指针的值是一个数组的地址
int ( * pa )[5];
pa++;pa往后移动20个字节(5*4)

对比,数组中的元素是指针(int*)
int *pa[5];
pa++;pa往后移动4个字节

高洛峰

不好意思翻老帖。无意间看到这个,因为以前做嵌入式编程,数组、指针是经常使用的,包括对指针变量直接赋值一个内存地址(这个在做正常的应用程序一般不会用到),以前也没有发现&arr和arr有什么区别。今天特意查了一下,原来这个要视编译器而定。有的编译器把数组和指针是分别对待的,对数组名取地址的意义是针对整个数组内存,有的编译器则把数组认为是指针的一个特定形式,这种情况指针跳一个就是一个数组元素的内存,而不存在整个数组内存这一说。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号