指针数组在前面指针初阶我有讲过这里我简短说明一下,需要详细了解可以翻翻前面博客。
指针数组是一个数组,与普通数组不同的是他数组内存放的类型是指针
int* arr[10];//整型指针数组
char* arr[10];//字符型指针数组
今天主要了解数组指针。
数组指针当然是一个指针,不过这个指针指向的类型是一个数组。
int (*p)[10];
这就是一个数组指针,因为p先和*结合,说明p是一个指针变量,指向一个大小为10个整形的数组。
那么定义好了我们给它初始化的时候怎么办呢?
在了解这个问题之前我们先了解一下数组名和&数组名的区别
#include<stdio.h>
int main()
{
int arr[10]={0};
printf("%p\n",arr);
printf("%p\n",&arr);
printf("%p\n",arr+1);
printf("%p\n",&arr+1);
return 0;
}
这是上面一段代码运行的结果,arr+1只加了四个字节,&arr+1加了40个字节,这是因为arr代表数组首元素的地址,而&arr代表整个数组的地址。
数组指针定义用的就是&arr
int arr[10]={0};
int (*p)[10]=&arr;
但是这样的代码我们一般不会使用,真正使用数组指针的是二维数组,我们知道二维数组的每一个元素可以看作一个一维数组,这里用数组指针接收那么,每一个指针都指向了二维数组中的一个以为数组。