解:
((&arr+1)-1)
int arr[6] = {1,2,3,4,5,6};
((&arr+1)-1)的值是多少
首先我们要了解以下知识点:
1.arr,&arr,*arr分别是什么?
,打印arr和&arr的地址:0x28fe70,0x28fe70,虽然地址相同,但是代表的含义不同arr代表数组的首地址,&arr代表数组的地址
接下来我们打印arr+1和&arr+1,:
arr+1代表向后偏移一个元素的大小,&arr+1代表向后偏移一个数组的大小。
arr+1:0x28fe74
&arr+1:0x28fe88 越界了 //偏移一个数组的大小,6个元素
arr+6:0x28fe88 越界了 //向后偏移6个元素
看到这我们继续看上面这道题:
*( *(&arr+1)-1)
&arr+1:arr先向后偏移了一个数组的大小,
*(&arr+1)-1:向前偏移一个元素,此时地址指向arr[6]的最后一个元素的地址
*( *(&arr+1)-1):取这个地址中的内容 答案为6