介绍指针数组的用法,包括声明、初始化、赋值及指针数组如何访问二维数组
一、指针数组
1.定义:所谓指针数组是指由若干个具有相同存储类型和数据类型的指针变量构成的集合;
⭕指针数组,即本质上是一个数组,装的元素是指针的数组。
⭕在访问二维数组时,我们可以用多个指针变量来存储二维数组拆分后的每个一维数组的地址,然后访问每一个一维数组时都有一个指针可以去加减地址来访问。把这些指针变量,装在一个数组里编号,就成了指针数组
2.
⭕指针数组的一般说明形式: <存储类型> <数据类型> *<指针数组名>[<大小>];
例如
(2)声明一个指针数组和数组: double * p[2] ,a[2][3];
把一维数组a[0]和a[1]的首地址分别赋予指针变量数组的数组元数pa[0]和pa[1]:
p[0]=a[0] ; // 等价p[0] = &a[0][0];
p[1]=a[1]; // 等价p[1] = &a[1][0];
此时pa[0]指向了一维数组a[0]的第一个元素a[0][0], 而p[1]指向了一维数组a[1]的第一个元素a[1][0]
如图所示:
因此可以通过p[0]或者p[1]加减地址来访问a这个二维数组的所有元素了
再如图
(2)或者用这种方式
⭕指针数组名表示该指针数组的起始地址;
注意:在32位机下,指针类型都是4个字节,不管是int * 还是char *还是double *;
二、程序举例
编程:利用指针数组处理一个二维数组,要求求出二维数组所有元素的和。
总结
⭕主要介绍了指针数组的用法,包括声明、初始化、赋值及指针数组如何访问二维数组等
⭕思考 如何计算指针数组占用的内存空间?(用sizeof算出来都是4个字节)
指针数组名加1,移动多少字节?(4个字节)
指针数组名相当于什么样的指针?(相当于二级指针)
存储数据的类型 * 变量名
int* * q
int*代表存储的是指针类型的数据,*q代表的是这是一个指针变量