一. 指针数组与数组指针
1.指针数组
指针数组,从字面意思上可以看出,这是一个数组类型,数组元素为存放指针。
// []优先级高于* 所以它是一个数组 其次才是指针
int a, b, c;
int *br[3] = { &a, &b, &c };
2.数组指针
1). 数组指针的概念
数组指针,指向数组的指针。
int ar[3] = { 1, 2, 3 };
// 一个能指向数组中有三个元素的指针
int (*p)[3] = &ar;
2). 数组指针的一般定义形式
我们通常通过typedef对数组指针进行重定义
1>.先定义数组类型,根据类型定义指针变量
// 定义一个数组
int a[10] = { 0 };
// 1.先定义数组类型,根据类型定义指针变量
typedef int A[10]; // 代表数组类型,步长为10
// 定义数组指针类型
// A 代表10个元素的数组类型
// *p 代表指针
// A *p 代表数组直至
A* p = &a;
// 原理
// p = &a;
// *p = *&a -> a
// (*p)[i] = a[i]
2>.先定义数组指针类型,根据类型定义变量(常用)
// () 和 [] 优先级一样,结合律从左向右
// ()有指针,它是一个指针
// []它是指向数组的指针,它有typedef,所以它是一个数组指针类型
typedef int(*P)[10];
P q = a;
3>.直接定义数组指针变量
// () 和 [] 优先级一样,结合律从左向右
int (*q)[10] = { 0 };