//c
#include <stdio.h>
int main()
{
int arr[5]={1,2,3,4,5};
int (*pa)[5]=&arr;
printf("%d",*((*pa)+1));
return 0;
}
*((*pa)+i)
请问 pa 解引用后,为什么会是地址呢?
//c
#include <stdio.h>
int main()
{
int arr[5]={1,2,3,4,5};
int (*pa)[5]=&arr;
printf("%d",*((*pa)+1));
return 0;
}
*((*pa)+i)
请问 pa 解引用后,为什么会是地址呢?
int (pa)[5]=&arr,
首先arr就是一个指针,那么pa就是一个二级指针,pa就是一级指针,所以*pa是一个地址,值跟arr一样,都是指向一个数组,具体就是&arr[0]的位置。然后指针加1就是偏移到下一个元素,因为pa是指向int类型的指针,所以往后移4个字节,刚好数组也是int类型的数组,所以指向arr[1],再对其进行解操作,得到arr[1]的值