【发布时间】:2014-04-10 06:15:34
【问题描述】:
int arr[10]={1,2,3,4,5,6,7,8,9,10};
printf("%p,%p\n", arr, &arr);
printf("%p,%p\n", arr+1, &arr+1);
return 0;
对于这段代码,GCC 编译器返回
0xbfe41348,0xbfe41348
0xbfe4134c,0xbfe41370
第一行很清楚,没问题。但是第二行让我感到困惑。第一个地址移动到下一个int,所以在arr之后4个字节,清除。但是,对于&arr+1,我认为它会指向整个数组的末尾arr[10],所以它应该在地址中添加4*10。我是不是误会了什么?
【问题讨论】:
-
见stackoverflow.com/questions/16019009/…,应该可以解释一下。
标签: c arrays memory-address