C语言数组a和&a的区别讲解
2019-02-09 00:11
537 查看
面试经典题目
#include "stdio.h" int main() { int a[5] = { 1,2,3,4,5 }; int *ptr = (int *)(&a + 1); printf("%d,%d", *(a + 1), *(ptr - 1)); /*getchar是用VS编写方便查看输出*/ getchar(); return 0; }
请思考一下上面的输出结果,如果你非常自信了,可以不用往下看
题目剖析
这个题目主要考察&a 和 a
- a 在这里代表是的数组首元素的地址即 a[0]的首地址,其值为 0x005efda0。
- &a 代表的是数组的首地址,其值为 0x005efda0。
- a+1 的值是 0x005efda0+1*sizeof(int),等于 0x005efda4。
- &a+1 的值是(0x005efda0 +(sizeof(a)= 5*sizeof(int))= 0x005efdb4 {0xcccccccc, 0xcb626a90, 0x005efdd0, 0x0029200e, 0x00000001}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接
您可能感兴趣的文章:
相关文章推荐
- 别人不会给你说的---C语言中数组名和指针的区别 及 sizeof用法
- C语言中字符数组和指向字符数组的指针的区别
- C语言中空格,空字符,字符数组结束符的区别
- C语言中,指针字符串与数组字符串的区别
- c语言中字符指针与字符数组的区别
- 在c语言中,数组 a[i++] 和数组 a[++i] 有区别吗? && 在c语言中,数组 a[0]++; 又是什么意思?
- C语言:数组和指针的区别
- <C语言>“指针数组与数组指针+指针函数与函数指针”---区别理解
- 7、C语言中一维数组名与一般指针变量的相似与区别(同理多维)
- C语言中空格,空字符,字符数组结束符的区别
- C语言数组首地址和数组名取地址区别
- 7_25 C语言 sizeof计算数组大小以及static讲解和静态库动态库
- C语言和Java字符串与字符数组区别
- C语言 函数返回数组和指针区别
- 数组里a和&a的区别
- C语言:scanf("%s",a)和gets(a)的区别(a[i]是字符串数组)
- C语言中关于字符数组与字符指针的本质区别
- c语言中字符串常见初始化时的问题,以及字符串数组与指针区别的分析
- C语言字符指针和字符数组的区别
- c语言:sizeof的使用,其不是函数,是一个操作符关键字,定义一个数组arr,输出arr和&arr的区别