This question already has answers here:
Closed 10 months ago.
What does getting the address of an array variable mean?
(7个答案)
我想了解数组的行为。请看下面的代码。int的大小是4。
int arr[]={10,9,8,7,6,5};

printf("\nSingle array print=> \n%u  ||  %u  ||  %u  ||  %u",
       singlearr, &singlearr, &singlearr + 1);

我得到输出:
2293248  ||  2293248  ||  2293272

我理解表达式“singlarr”和“&singlearr”,但当我执行“&singlearr + 1”时,为什么它会给出2293272的输出,即地址2293248(2293248+24)之后的24字节?

最佳答案

&arr是指向整个数组的指针。所以,如果我们移动&arr 1个位置,它将指向下一个n个元素块。
如果数组基址是b,&arr+1将b + (n * 4)
这里,n=6,b=2293248
所以,&arr+1 = b+(n*4) = 2293248 + (6*4) = 2293272

10-08 10:49