一· 指针数组
1.1 指针数组的说明
指针数组是指针还是数组?
类比一下:
- 整型数组——存放整型的数组
- 字符数组——存放字符的数组
- 指针数组——存放指针的数组
![](https://i-blog.csdnimg.cn/blog_migrate/3128caae7d710408feb7ac6fb1e9d2aa.png)
指针数组的每个元素都是⽤来存放地址(指针)的。
指针数组的每个元素是地址,⼜可以指向⼀块区域。
2.2 指针数组的应用——指针数组模拟二维数组
int main()
{
int arr1[5] = { 1,2,3,4,5 };
int arr2[5] = { 2,3,4,5,6 };
int arr3[5] = { 3,4,5,6,7 };
int* parr[3] = { arr1,arr2,arr3 };
int i = 0;
for (i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 5; j++)
{
printf(" %d", parr[i][j]);
// 等价的 *(*(parr + i) + j)
}
printf("\n");
}
return 0;
}
二· 数组指针
2.1 数组指针的说明
整形指针变量: int * pint; 存放的是整形变量的地址,能够指向整形数据的指针。
浮点型指针变量: float * pf; 存放浮点型变量的地址,能够指向浮点型数据的指针。
数组指针变量是:存放的是数组的地址,能够指向数组的指针变量。
下面代码哪个是数组指针变量?
int *p1[10]; int (*p2)[10];
数组指针变量
int (*p)[10];
解释:p先和*结合,说明p是⼀个指针变量变量,然后指着指向的是⼀个⼤⼩为10个整型的数组。所以 p是⼀个指针,指向⼀个数组,叫 数组指针。
这⾥要注意:[ ]的优先级要⾼于*号的,所以必须加上()来保证p先和*结合。
2.2 数组指针的初始化
数组指针变量是⽤来存放数组地址的
int arr[10] = {0}; &arr;//得到的就是数组的地址
如果要存放这个数组的地址,就得存放在数组指针变量中,如下:
int(*p)[10] = &arr;
数组指针类型解析:
int (*p) [10] = &arr;
| | |
| | |
| | p指向数组的元素个数
| p是数组指针变量名
p指向的数组的元素类型