代码之家  ›  专栏  ›  技术社区  ›  infiniteLearner

无法理解,在执行操作&arr+1[重复]时,如何在数组中计算下一个地址

c
  •  1
  • infiniteLearner  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我试图理解数组行为。请参见下面的代码。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个字节?

    1 回复  |  直到 6 年前
        1
  •  3
  •   SbrTa    6 年前

    &arr是指向整个数组的指针。因此,如果我们移动1个位置,它将指向 n 元素。 如果数组基址为 ,&arr+1将 b + (n * 4)

    这里,n=6,b=2293248 所以, &arr+1 = b+(n*4) = 2293248 + (6*4) = 2293272