- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二维数组和指针的讲解
好好考()
全国计算机等级考试
二级C语言
第12讲 二维数组与指针
二维数组的定义
数组元素的引用及初始化
二维数组和指针
二维数组名和指针数组作为实参
二维数组程序举例
真题分析
第一节 二维数组的定义
定义形式:
数据类型 数组名[常量表达式1][常量表达式2]
数组元素的存放顺序
内存是一维的
按行序优先
如:int a[3][2];
int a[3][2]
a[0][1]
a[1][0]
a[1][1]
a[2][0]
a[2][1]
a[0][0]
a[0][0] a[0][1]
a[1][0] a[1][1]
a[2][0] a[2][1]
例 int a[3][4];
二维数组的理解:特殊的一维数组
每个元素a[i]各包含4个元素
分别为:a[i][0], a[i][1], a[i][2], a[i][3],
二维数组a由3个元素组成:
a[0]、a[1]、a[2]
a[0][1]
a[0][2]
a[0][3]
a[1][0]
a[1][1]
a[0][0]
a[1][3]
a[2][0]
a[2][1]
a[2][2]
a[2][3]
a[1][2]
a[0]
a[1]
a[2]
分行全部初始化
第二节 二维数组的初始化及引用
第二节 二维数组的初始化及引用
分行部分初始化
分行初始化,省略第一维的大小
第二节 二维数组的初始化及引用
按元素排列顺序初始化
第二节 二维数组的初始化及引用
按元素排列顺序部分初始化
第二节 二维数组的初始化及引用
按元素排列顺序初始化,省略第一维大小
第二节 二维数组的初始化及引用
引用形式
数组名[下标][下标]
第二节 二维数组的初始化及引用
如:int a[2][3];
可以引用的数组元素有:
a[0][0], a[0][1],a[0][2],
a[1][0],a[1][1], a[1][2];
二维数组的地址
对于一维数组:
(1)数组名array表示数组的首地址,
即array[0]的地址;
(2)数组名array是地址常量
(3)array+i是元素array[i]的地址
(4)array[i] *(array+i)
第三节 二维数组和指针
对于二维数组:
(1)a是数组名。
(2)包含三个元素 :a[0],a[1],a[2]。每个元素a[i]又是一个一维数组,包含4个元素: a[i][0]、 a[i][1]、 a[i][2]、 a[i][3]
int a[3][4];
二维数组的地址
对二维数组 int a[3][4],有
a-----二维数组的首地址,即第0行的首地址
a+i-----第i行的首地址
a[i] *(a+i)------第i行第0列元素的地址
a[i]+j *(a+i)+j -----第i行第j列元素的地址
*(a[i]+j) *(*(a+i)+j) a[i][j]
a+i a[i],表示第i行首地址,指向行
a[i] *(a+i) a[i][0],表示第i行第0列元素地址,指向列
2000
2004
2010
2014
2020
2024
a
a+1
a+2
二维数组的地址
二维数组元素表示形式:
(1)a[1][2]
(2)*(a[1]+2)
(3)*(*(a+1)+2)
(4)*(a[0][0]+1*4+2)
首元素地址表示:
(1) a+1
(2) a[1][0]
(3) a[1]
(4) *(a+1)
行指针
列指针
int a[3][4];
元素地址表示:
(1) a[1][2]
(2) a[1]+2
(3) *(a+1)+2
(4)a[0][0]+1*4+2
二维数组的地址
二维数组的地址
指向二维数组元素的指针变量
例 指向二维数组元素的指针变量
main()
{ static int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p;
for(p=a[0];pa[0]+12;p++)
{ if((p-a[0])%4==0) printf(\n);
printf(%4d ,*p);
}
}
通过指针数组来引用二维数组元素
若有以下定义:
int *p[3],a[3][4],i,j;
表示p是一个数组名,该数组类型为指针类型,即数组的3个元素均为指针类型的数据。注意: int *p[4]与int (*p)[4]代表不同的含义。
指针数组用法举例
main()
{ static int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
文档评论(0)