图6.3二维数组a[3][4]示意图多维数组定义的一般形式为:数据类型符数组名[常量表达式][常量表达式]…图6.4二维数组存储示意图图6.5三维数组存储示意图根据多维数组在存储器中按行存储的规则和多维数组的行列顺序可以计算出多维数组元素存储时在线性连续存储单元中的排列序号。......
2023-11-20
用指针变量可以指向一维数组,也可以指向多维数组。这里仅讨论二维数组的指针。
1.二维数组的地址
例如int array[n] [m];定义一个二维数组array,有n×m 个元素。
从二维数组的角度看,数组名array 代表整个二维数组的首地址,也是第0 行的首地址。array+1 代表第1 行的首地址。因此,array[0]代表第0 行中第0 列元素地址,即&array[0][0],array[1]代表第1 行第0 列元素的地址,即&array[1][0]。当然,并不存在array[i]这样的变量,它只是一种地址的计算方法,能得到第i 行的首地址。
显然,array[0]和*(array+0)等价,array[1]和*(array+1)等价,array[i]和*(array+i)等价。所以,&array[i]和array+i 等价,都是指向二维数组的第i 行。array[i]和*(array+i) 都是指向二维数组的第i 行第0 列。array[i]+j 指向二维数组array[i][j]。*(*(array+i))就是数组元素array[i][0]的值。*(*(array+i)+j)就是数组元素 array[i][j]的值。计算 array[i][j]在数组中的相对位置为“i×m+j”,*(array[i]+j)就是数组array[i][j]的值。
2.二维数组指针
如果二维数组array[0]的指针为p,则*(p+(i*m+j))指向数组元素array[i][j]。
【例6.8】使用指针变量输出二维数组任一行任一列元素的值。程序如下:(www.chuimin.cn)
程序运行结果如图6.12 所示。
图6.12 程序运行结果
说明:
(1)在主函数中定义了一个指针变量p,指向数组array 第0 行第0 列。
(2)p+(i*4+j)是二维数组array 第i 行第j 列的地址。*(p+(i*4+j))就是二维数组array 元素array[i][j]的值。
有关C语言程序设计实用教程的文章
图6.3二维数组a[3][4]示意图多维数组定义的一般形式为:数据类型符数组名[常量表达式][常量表达式]…图6.4二维数组存储示意图图6.5三维数组存储示意图根据多维数组在存储器中按行存储的规则和多维数组的行列顺序可以计算出多维数组元素存储时在线性连续存储单元中的排列序号。......
2023-11-20
一个指针变量用来指向一个结构体变量时,称之为结构体指针变量。结构体指针变量中的值是所指向的结构体变量的首地址。有了结构体指针变量,就能方便地访问结构体变量的各个成员。下面通过例子来说明结构体指针变量的具体说明和使用方法。图7.6程序运行结果说明:程序定义了一个结构stu,定义了stu 类型结构体变量boy1,并初始化赋值,还定义了一个指向stu 类型结构的指针变量pstu。......
2023-10-21
当指针变量指向一维数组的首元素时,称为指向了一维数组。所以,函数中一维数组形式参数可以用同类的指针形式参数替代;同理也可以用指向特定数组的指针变量来传递数组类实际参数。特别需要注意的是,函数的形式参数无论使用的是数组名形式还是指针变量形式,本质上都是一个指针变量,在被调函数中既可以将它当作数组名使用也可以将它当作指针变量使用。......
2023-11-20
例如,有如下所示的C语句序列:则结构体指针变量p1指向结构体数组元素a[2],其关系如图10.2所示。此时应该注意到被指针变量p1指向的结构体数组元素本身是不能作为整体操作的,所以*p1也不能作为整体操作。......
2023-11-20
对一维数组的引用,既可以用传统的数组元素的下标法,也可使用指针的表示方法。例7.11输入10个数,采用指针变量表示的地址法输入输出数组各元素。由于数组元素在内存是连续存放的,若给指向整型变量的指针传递数组的首地址,则该指针指向二维数组。#include<stdio.h>例7.16用指针法输入输出二维数组各元素。......
2023-11-18
void类型指针中的数据不能访问,如果非要访问的话,可以通过强制转换将void类型指针转换为与所指向的数据类型相符的类型。所谓“相同存储对齐限制”是指void类型指针所指的数据在内存中所占的长度与显式转换后的指针所指的数据在内存中所占的长度相等。同理,如果是将void类型转换为具有更小存储对齐限制的指针时,也可能引起数值的改变。......
2023-11-18
指针数组是一组有序的指针的集合。用一维指针数组处理二维数组示例。程序一次运行的结果为:11415019618955311556532879428指针数组还常用于处理若干个相关的一维数组,此时指针数组中的每个元素指向一个一维数组的首地址。上面程序综合使用了指针数组和二级指针变量,在数据对象的定义和初始化阶段完成后形成的处理结构如图8.9所示。......
2023-11-20
相关推荐