Why do “a+1” and “&a+1” give different results when “a” is an int array?

后端 未结 2 1399
后悔当初
后悔当初 2020-12-19 02:35
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);
}
         


        
2条回答
  •  感动是毒
    2020-12-19 02:46

    Well, a is the address of the first element of the array, and &a is the address of the array, but obviously they both have the same address.

    However when you add (or subtract) a number from a pointer the compiler takes the size of the data into consideration thus in your case (assuming the size of int is 4 bytes) a+1 will be bigger than a by 4 because you move the pointer one integer ahead, but &a+1 would be bigger by 40 because you more the pointer one ARRAY OF 10 INTEGERS ahead.

提交回复
热议问题