1.数组、指针
数据的集合,内存中是一个连续的内存区
指针 指向数组的首地址
通过移动指针,可以指向数组的各个元素
指针 + 1,是根据当前指针类型 加 类型的大少,进行移动
2.指针数组
数组的每一个元素都是一个指针(指针指向不同的变量)
int arr[] = { 100,200,300 };
int *p[3];//指针数组
for (int i = 0; i < 3; i++)
{
p[i] = &arr[i]; //取地址,把地址复制给指针
}
printf("-------操作后-------\n");
for (int i = 0; i < 3; i++)
{
printf("数组%d\n", *p[i]);
}
优先级 () > [] > *
3.数组指针(行指针)
int(*p)[n]
()优先级高,首先说明p是一个指针,指向一个整形的一维数组,这个一维数组的长度是n,也可以说是p的步长。
p + 1要跨过n个整形数据的长度。
int a[3][4]// 二维数组
int (*p)[4]; // 该语句是定义一个数组指针,指向含有4个元素的一维数组
p = a; // 将二维数组的首地址赋值给p,就是a[0]或 &a[0][0]
p++; // 该语句执行后,p跨过行a[0][] 指向了行a[0][]
指针数组代表了一个数组,每个元素存放的是一个地址
数组支持是一个变量,存放的是一个指针,指向了一个二维数组