|
100鱼币
本帖最后由 风之残月 于 2014-11-9 22:37 编辑
#include <stdio.h>
int main()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10};
printf("%p\n",&a);
printf("%p\n",a);
printf("%p\n",a + 1);
printf("%p\n",&a + 1);
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(&a));
return 0;
}
输出结果:
0017FDE4
0017FDE4
0017FDE8
0017FE0C
40
4
如果a代表数组整个元素的地址,那么 a + 1 为什么 = 0017FDE8 只偏移一个int?
如果&a代表数组整个元素的地址,那么sizeof(&a) 为什么等于 4,而不是40呢?
我技术很差,麻烦大神们讲的通俗易懂些。
如果有图那就更好啦~
|
最佳答案
查看完整内容
一般的编程应用完全用不到这些东西,或者不用这些东西也可以应付。这些东西涉及C语言指针中比较晦涩的部分,如果能够用平常心跳过这个部分是再好不过的;然而,总有一些人不彻底解决这些问题就不能安心继续学习(不是说这些人不好啊,而是有些人的本性就是这样。。。其实我自己当年也是不把这些问题搞清楚就不能安心学习)。既然这样,就干脆依据C语言标准,认真将指针和数组的问题一劳永逸的搞清楚比较合算。我个人推荐一下这个链 ...
|