指针的概念
- 指针就是一个变量,用来存放地址,地址唯一标识一块内存空间
- 指针的大小是固定的由操作系统的位数决定在32位平台(64位平台)下是4(8)。
- 指针是有类型的指针的类型决定了指针+-的步长,也决定了解引用时访问的权限(一个字符指针访问一个字节,一个整形指针访问四个字节)。
数组指针与指针数组
数组指针是一个指针。
指针数组是一个数组,数组的每个元素的是一个指针。
int *p1;
char *p2;
在上面代码中p1是整形指针——指向整形的指针
p2是字符指针——指向字符的指针
也就是说数组指针就是一个指针——指向数组的指针
数组指针存放的是数组的地址,数组的地址也是首元素地址
而指针数组就是一个数组,数组的每个元素都是一个指针
定义数组指针与指针数组
int arr[10];
int *p1[10]; //指针数组
int (*p2)[10]; //数组指针
代码中的p1是一个指针数组,而p2是数组指针 就像上面的int arr[10]在这条语句中arr[10]表示他是一个数组 int则是这个数组元素的类型。
在上面第二条语句中由于*与[]的优先级不同,[]的优先级大于*??? p1先与[]结合表示它是一个数组,数组元素有10个,其数组元素的类型就是int* 。
而下面的int(*p2)[10]将*p2括起来 表示是一个指针
如同int *p一样*p表示是一个指针,指向的是int型
那么这里的(*p2)也表示是一个指针其指向的是 有10个整形的数组元素(即int?? [10])的数组。
例:
int* (*p)[10];
//数组指针 指向一个数组元素有10个、每个元素是一个整形指针的数组
int*(*p[5])[10];
//指针数组——指向一个元素为五个、每个元素都是一个指向 元素有十个每个元素都是一个整形指针 的数组
|