赞
踩
在C语言的学习中对&a + 1, 和&(a +1)很疑惑,查找后的结果,与各位交流一下,哪里有对的也请指正。
当数组是 一维数组时, 数组名是以一个数组元素为颗粒度,表现为“当数组名加1时,这里的1表示一个数组元素单元”,例子中的数组元素为整数,所以数组名加1时地址加4;
而 数组名取地址&以整个数组为颗粒度,表现为“当数组名取地址&加1时,这里的1是表示整个数组单元”,例子中的数组为有5个元素的整型数组,所以数组名取地址&加1时,地址加20.
- 1 #include <stdio.h>
- 2 #include <string.h>
- 3
- 4 int main(){
- 5 int a[4] = { 1, 2, 3, 4};
- 6 int *ptr1 = (int *)(&a + 1);
- 7 printf("%x %x", ptr1[-1], *(a + 1));
- 8 return 0;
- 9
- 10 }
输出结果是: 4 2
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。