举例:
说明:因为()的优先级在*前面,所以有无括号会造成不同的结果
1.int (*x)[4]指向数组的指针 数组指针
2.int *(x)[4]保存指针的数组 指针数组
3.int *f();返回值为指针的函数 指针函数
4.int (*f)();指向函数的指针 函数指针
例题分析:
一维数组:
int arr[4]; 数据类型
arr: int *x;
arr+1: int *x;
arr[0]: int x;
arr[0]+1: int x;
arr和arr+1表示该数组地址的第一个地址和后一个,所以为指针类型数据
arr[0]和arr[0]+1代表第一个格子和后一个,所以为整型类型
二维数组:
int brr[3][4]; 数据类型
brr; int(*x)[4];
brr+1; int(*x)[4];
brr[0]; int *x;
brr[0]+1; int *x;
brr[0][0]; int x;
brr[0][0]+1; int x;
将该二维数组分为三个一维数组块,brr代表第一大块,brr+1代表第二大块,所以为int(*x)[4]类型;brr[0],brr[0]+1,brr[0][0],brr[0][0]+1跟上面一维数组同理.