C语言二维数组与指针.ppt
好好考,全国计算机等级考试 二级C语言,第12讲 二维数组与指针,二维数组的定义 数组元素的引用及初始化 二维数组和指针 二维数组名和指针数组作为实参 二维数组程序举例 真题分析,第一节 二维数组的定义,定义形式 数据类型 数组名常量表达式1常量表达式2 数组元素的存放顺序 内存是一维的 按行序优先,如int a32;,int a32,a01,a10,a11,a20,a21,a00,a00 a01 a10 a11 a20 a21,例 int a34;二维数组的理解特殊的一维数组,每个元素ai各包含4个元素 分别为ai0, ai1, ai2, ai3二维数组a由3个元素组成 a0、a1、a2,a01,a02,a03,a10,a11,a00,a13,a20,a21,a22,a23,a12,a0,a1,a2,分行全部初始化,第二节 二维数组的初始化及引用,第二节 二维数组的初始化及引用,分行部分初始化,分行初始化,省略第一维的大小,第二节 二维数组的初始化及引用,按元素排列顺序初始化,第二节 二维数组的初始化及引用,按元素排列顺序部分初始化,第二节 二维数组的初始化及引用,按元素排列顺序初始化,省略第一维大小,第二节 二维数组的初始化及引用,引用形式 数组名下标下标,第二节 二维数组的初始化及引用,如int a23; 可以引用的数组元素有 a00, a01,a02, a10,a11, a12;,二维数组的地址,对于一维数组 (1)数组名array表示数组的首地址, 即array0的地址; (2)数组名array是地址常量 (3)arrayi是元素arrayi的地址 (4)arrayi *arrayi,第三节 二维数组和指针,对于二维数组 (1)a是数组名。 包含三个元素 a0,a1,a2 (2)每个元素ai又是一个一维数组,包含4个元素 ai0、 ai1、 ai2、 ai3,int a34;,二维数组的地址,对二维数组 int a34,有 a-二维数组的首地址,即第0行的首地址 ai-第i行的首地址 ai *ai第i行第0列元素的地址 aij *aij -第i行第j列元素的地址 *aij **aij aij,ai ai,表示第i行首地址,指向行 ai *ai ai0,表示第i行第0列元素地址,指向列2000,,,,,2024,a,a1,a2,二维数组的地址,二维数组元素表示形式 (1)a12 (2)*a12 (3)**a12 (4)*a001*42,首元素地址表示 1 a1 2 a10 3 a1 4 *a1行指针列指针,int a34;,元素地址表示 1 a12 2 a12 3 *a12 4a001*42,二维数组的地址,二维数组的地址,指向二维数组元素的指针变量,例 指向二维数组元素的指针变量,main static int a341,3,5,7,9,11,13,15,17,19,21,23; int *p; forpa0;pa012;p ifp-a040 printf“n“; printf“4d “,*p; ,通过指针数组来引用二维数组元素,若有以下定义 int *p3,a34,i,j;,表示p是一个数组名,该数组类型为指针类型,即数组的3个元素均为指针类型的数据。注意 int *p4与int *p4代表不同的含义。,指针数组用法举例,main static int a341,3,5,7,9,11,13,15,17,19,21,23; int i,j, *p3; fori0;i3;i piai; forj0;j4;j printf“d “,*pij; printf“n“; , pijp0*a; p0,* aij,aij,定义形式 数据类型 *指针名数组大小 如 int *p4;, 不能少 int *p4与int *p4不同,p的值是一维数组的 首地址,p是行指针,可让p指向二维数组的某一行 如int a34, *p4a;,一维数组指针变量维数和 二维数组列数必须相同,通过指向一维数组的指针变量来引用数组元素,一维数组指针变量维数和 二维数组列数必须相同a00,a01,a10,a11,a20,a21a02,a03,a12,a13,a22,a23p,p1,p2p01或 *p1p12或 *p12,**p1或 *p1,**p12,int a34, *p4a;,通过指向一维数组的指针变量来引用数组元素,int a34, *p4; pa;main static int a341,3,5,7,9,11,13,15,17,19,21,23; int i,j,*p4; forpa,i0;i3;i,p forj0;j4;j printf“d “,**pj; printf“n“; a00,a01,a10,a11,a20,a21a02,a03,a12,a13,a22,a23ppp, **aj, p0j,通过指向一维数组的指针变量来引用数组元素,若 int a34, *p14a;,第四节 二维数组名和指针数组作为实参,指针的数据类型小结,第五节 二维数组程序举例,将二维数组行列元素互换,存到另一个数组中,1a00,b00 2a01,b10 3a02,b20 4a10,b01 5a11,b11 6a12,b21,真题分析,4月 (24)以下错误的定义语句是( )。 A)int x 30,1,1,2,3; B)int x431,2,3,1,2,3,1,2,3,1,2,3; C)int x4 1,2,3,1,2,3,1,2,3,1,2,3; D)int x 31,2,3,4;,答案C,真题分析,4月 (26)若有定义int a23;, 以下选项中对a 数组元素正确引用的是( )。 A)a21 B)a23 C)a 03 D)a121,答案D,真题分析,9月 (35)有以下程序 include define N 4 void funint a N, int b int i; fori0; iN; i biaii; main int x N1,2,3,4,5,6,7,8,9,10,yN, i; funx,y; for i0; iN; i printf“d,“, yi; printf“n“; 程序的运行结果是( )。 A)l,2,3,4, B)1,0,7,0, C)1,4,5,9, D)3,4,8,10答案B,2 3 0 0 0 0 6 7 8 9 10 0 0,真题分析,9月 (36)有以下程序 include int funint *s4,int n, int k int m, i; ms0k; foril; im msik; return m; main int a441,2,3,4,11,12,13,14,2l,22,23,24,31,32,33,34; printf“dn“, funa,4,0; 程序的运行结果是( )。 A)4 B)34 C)31 D)32,答案C,2 3 4 11 12 13 14 21 22 23 24 31 32 33 34,真题分析,9月 (12)以下程序按下面指定的数据给x 数组的下三角置数,并按如下形式输出,请填空。 4 3 7 2 6 9 1 5 8 10,答案 【12】i 【13】 n,include main int x44,n0,i,j; forj0;jj; 【12】 n;xij 【13】; fori0;i4;i forj0;ji;j printf“3 d“,xij; printf“n“;,知识点分析,题型上机、笔试都有。 重点掌握 二维数组的定义、元素的引用及初始化的方法 用指针表示对二维数组元素及其地址的方法 数组名做函数的参数,