简单指针
int *p;
*p是一个int → p是一个指针,它指向int。对p解引用1次得到int。
变形写法如下:
int*(p); //p的类型是int*
int(*p); //*p的类型是int,即对p解引用1次得到int。→(一重)指针指向的是实际数据
二重指针
int **p2;
*p2是一个int* → p2是一个指针,它指向int*。对p解引用2次得到int。
变形写法如下:
int**(p2); //p2的类型是int**,二重指针
int*(*p2); //*p2的类型是int*,即对p2解引用1次得到整形指针
int(**p2); //**p2的类型是int,即对p2解引用2次得到整形指针
三重指针
int ***p3;
*p3是一个int** → p3是一个指针,它指向int**。对p3解引用3次得到int。
变形写法如下:
int***(p3); //p3的类型是int***,三重指针
int**(*p3); //*p3的类型是int**,即对p3解引用1次得到int**。→三重指针指向的是二重指针
int*(**p3); //**p3的类型是int*。→三重指针解引用2次得到一重指针,3-2=1呵呵
int(***p3); //***p3的类型是int。→三重指针解引用3次得到int数据
由上面的例子,解N次引用后的类型=原类型扣除N颗星。
“某某指向”在运算上等同于“对某某解引用1次”。
所以会有:”三重int指针解引用2次后指向int“(解引用2次+指向1次,int***扣除3颗星后得到int)
数组与指针
C语言标准6.1.2.:数组类型 描述相邻接分配的对象的非空集合,该类对象具有特定的成员对象类型,称为元素类型。数组类型由其元素类型和数组中元素的数目表征。称数组类型由其元素类型派生,且若其元素类型为T,则该数组类型有时被称为“T数组”。从元素类型构造数组类型的过程称为“数组类型的派生”。
注:由于对象类型中不包括不完整类型,因此不可能构造一个不完整类型的数组。