#include "stdafx.h"
int main(int argc, char* argv[])
{
int arr[16] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };
int(*px)[2];
printf("%d\n", sizeof(px));
px = (int(*)[2])arr;
printf("%d\n", px);
px++;
printf("%d\n", px);
printf("%d %d\n",px,*px);
px++;
printf("%d %d\n",px,*px+1);
return 0;
}
- px++后,px指向的是&arr[2]的地址,px和*px是一样的,但是类型不一样。px是int 类型,而px是int ()[2]类型。(px) + 1的偏移量是sizeof(int),但是px+1的偏移量是2 * sizeof(int); 因为px和px都是指针,不论是什么类型的指针,以及几维的指针,变量里存放的都是地址值,那么px和px都存放的是&arr[2]的地址,因此输出%p打印他们的地址值都是一样的,但类型不一样了。