CPointer

上传人:xy****7 文档编号:54518124 上传时间:2018-09-14 格式:PPT 页数:31 大小:324.50KB
返回 下载 相关 举报
CPointer_第1页
第1页 / 共31页
CPointer_第2页
第2页 / 共31页
CPointer_第3页
第3页 / 共31页
CPointer_第4页
第4页 / 共31页
CPointer_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《CPointer》由会员分享,可在线阅读,更多相关《CPointer(31页珍藏版)》请在金锄头文库上搜索。

1、好好考(),全国计算机等级考试 二级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

2、、a1、a2,a01,a02,a03,a10,a11,a00,a13,a20,a21,a22,a23,a12,a0,a1,a2,分行全部初始化,第二节 二维数组的初始化及引用,第二节 二维数组的初始化及引用,分行部分初始化,分行初始化,省略第一维的大小,第二节 二维数组的初始化及引用,按元素排列顺序初始化,第二节 二维数组的初始化及引用,按元素排列顺序部分初始化,第二节 二维数组的初始化及引用,按元素排列顺序初始化,省略第一维大小,第二节 二维数组的初始化及引用,引用形式 数组名下标下标,第二节 二维数组的初始化及引用,如:int a23; 可以引用的数组元素有: a00, a01,a02,

3、a10,a11, a12;,二维数组的地址,对于一维数组: (1)数组名array表示数组的首地址,即array0的地址; (2)数组名array是地址常量 (3)array+i是元素arrayi的地址 (4)arrayi *(array+i),第三节 二维数组和指针,对于二维数组: (1)a是数组名。 包含三个元素 :a0,a1,a2 (2)每个元素ai又是一个一维数组,包含4个元素: ai0、 ai1、 ai2、 ai3,int a34;,二维数组的地址,对二维数组 int a34,有 a-二维数组的首地址,即第0行的首地址 a+i-第i行的首地址 ai *(a+i)-第i行第0列元素的地

4、址 ai+j *(a+i)+j -第i行第j列元素的地址 *(ai+j) *(*(a+i)+j) aij,a+i &ai,表示第i行首地址,指向行 ai *(a+i) &ai0,表示第i行第0列元素地址,指向列,2000,2004,2010,2014,2020,2024,a,a+1,a+2,二维数组的地址,二维数组元素表示形式: (1)a12 (2)*(a1+2) (3)*(*(a+1)+2) (4)*(&a00+1*4+2),首元素地址表示: (1) a+1 (2) &a10 (3) a1 (4) *(a+1),行指针,列指针,int a34;,元素地址表示: (1) &a12 (2) a1

5、+2 (3) *(a+1)+2 (4)&a00+1*4+2,二维数组的地址,二维数组的地址,指向二维数组元素的指针变量,例 指向二维数组元素的指针变量,main() static int a34=1,3,5,7,9,11,13,15,17,19,21,23;int *p;for(p=a0;pa0+12;p+) if(p-a0)%4=0) printf(“n“);printf(“%4d “,*p); ,通过指针数组来引用二维数组元素,若有以下定义: int *p3,a34,i,j;,表示p是一个数组名,该数组类型为指针类型,即数组的3个元素均为指针类型的数据。注意: int *p4与int (*

6、p)4代表不同的含义。,指针数组用法举例,main() static int a34=1,3,5,7,9,11,13,15,17,19,21,23;int i,j, *p3;for(i=0;i3;i+) pi=ai;for(j=0;j4;j+)printf(“%d “,*(pi+j);printf(“n“); , pij,p0=*a; p0=,* (ai+j),aij,定义形式: 数据类型 (*指针名)数组大小 如: int (*p)4;,( )不能少 int (*p)4与int *p4不同,p的值是一维数组的 首地址,p是行指针,可让p指向二维数组的某一行如:int a34, (*p)4=a

7、;,一维数组指针变量维数和 二维数组列数必须相同,通过指向一维数组的指针变量来引用数组元素,一维数组指针变量维数和 二维数组列数必须相同,a00,a01,a10,a11,a20,a21,a02,a03,a12,a13,a22,a23,p,p+1,p+2,p0+1或 *p+1,p1+2或 *(p+1)+2,*(*p+1)或 (*p)1,*(*(p+1)+2),int a34, (*p)4=a;,通过指向一维数组的指针变量来引用数组元素,int a34, (*p)4; p=a;,main() static int a34=1,3,5,7,9,11,13,15,17,19,21,23;int i,j

8、,(*p)4;for(p=a,i=0;i3;i+,p+)for(j=0;j2!1,答案:D,真题分析,2008年9月 (35)有以下程序 #include #define N 4 void fun(int a N, int b ) int i; for(i=0; iN; i+) bi=aii; main() int x N=1,2,3,4,5,6,7,8,9,10,yN, i; fun(x,y); for (i=0; iN; i+) printf(“%d,“, yi); printf(“n“); 程序的运行结果是( )。 A)l,2,3,4, B)1,0,7,0, C)1,4,5,9, D)3

9、,4,8,10,答案:B,2 3 00 0 06 7 8 9 10 0 0,真题分析,2008年9月 (36)有以下程序 #include int fun(int (*s)4,int n, int k) int m, i; m=s0k; for(i=l; im) m=sik; return m; main() int a44=1,2,3,4),11,12,13,14,2l,22,23,24,31,32,33,34; printf(“%dn“, fun(a,4,0); 程序的运行结果是( )。A)4 B)34 C)31 D)32,答案:C,2 3 4 11 12 13 1421 22 23 24

10、 31 32 33 34,真题分析,2008年9月 (12)以下程序按下面指定的数据给x 数组的下三角置数,并按如下形式输出,请填空。 4 3 7 2 6 9 1 5 8 10,答案: 【12】i 【13】 n,#include main() int x44,n=0,i,j; for(j=0;j=j; 【12】) n+;xij= 【13】; for(i=0;i4;i+) for(j=0;j=i;j+) printf(“%3 d“,xij);printf(“n“);,知识点分析,题型:上机、笔试都有。 重点掌握: 二维数组的定义、元素的引用及初始化的方法 用指针表示对二维数组元素及其地址的方法 数组名做函数的参数,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号