作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
int main()
{
int a[]={1,2,3,4,5,6,7,8,9,0};
printf("a = %u , &a = %u\n",a,&a);
printf("a+1 = %u , &a+1 = %u\n",a+1,&a+1);
}
a 和 &a 在内部是如何解释的?
最佳答案
这两个语句都打印出地址,可能是为了解释指针运算。
a
和 &a
不一样,它们有不同的类型,但是拥有相同的内存地址。
&a
是 int (*)[10]
类型(类似于指向数组的指针)a
是 int [10]
类型(类似于指向单个元素的指针)
因此,当您添加 1 时,请记住这些类型。指针将偏移地址包含的类型的大小。 a+1
按 int 的大小偏移,即到数组中的第二个元素。 &a+1
完全超出整个数组的偏移量。
关于c - 为什么当 "a+1"是一个 int 数组时, "&a+1"和 "a"给出不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2989370/
我是一名优秀的程序员,十分优秀!