重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第15讲 二维数组与指针

第15讲 二维数组与指针
第15讲 二维数组与指针

指针与二维数组 define M 2 define n3 int b[MiN] 两种观点: 看成一个一维数组 看成数组的数组
2 指针与二维数组 #define M 2 #define N 3 … int b[M][N]; ▪ 两种观点: ▪ 看成一个一维数组 ▪ 看成数组的数组

将二维数组看成一个一维数组 int b[M]N]: 维数组b相当于一个有6个元 的一维数组 b|o|1 若有int*p=&b[o][o] 或p=bo]:(总之是列地址) P[2] b012l b[[门相对于数组起始地址的偏P[3] 移量为产N+j P[4] Cb[11[11 则P护N+门]或(p+产N+)表示每 轮数想元素 3
3 将二维数组看成一个一维数组 ▪ int b[M][N]; ▪ 二维数组b相当于一个有6个元素 的一维数组 ▪ 若有int *p=&b[0][0]; ▪ 或p=b[0] ;(总之是列地址) ▪ b[i][j]相对于数组起始地址的偏 移量为i*N+j ▪ 则p[i*N+j]或*(p+i*N+j)表示每 一个数组元素。 b[0][0] b[0][1] b[0][2] b[1][0] b[1][1] b[1][2] p P[0] P[2] P[3] P[4] P[5] P[1]

填空题:求二维数组元素的和鼠 Include void maino 〔ita34-1357911.13,171921,23 int i.j. sum=o, * p= a[o]ox &a[d for〔i=0:3:i++ PrOJ for(=0; j<4: j++) P[] aol P[2] sum+=p[3+] P[3] printf sum=%4d", sum): P[4 P[5] Fa[lil 4
4 填空题:求二维数组元素的和 #include void main() { int a[3][4]={1,3,5,7,9,11,13,17,19,21,23}; int i,j,sum=0,*p= ; for ( i=0 ;i<3;i++) for(j=0; j<4; j++) { sum+=p[ ]; } printf(“sum=%4d",sum); } a[0]或&a[0][0] i*3+j a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] …… P[0] P[2] P[3] P[4] P[5] …… P[1] p

填空:输出二维数组元输出果5 #include 9111315 17192123 void maino inta[3][4]=1,3579,11,1317192123} int*p=a[o或&aroo]: for( : p<a[o]+12: p++) i(p-qo1)%4==0) 31alol1l rinf(\n") 5 printf"%4d",中) 7 9 13
5 #include void main() { int a[3][4]={1,3,5,7,9,11,13,17,19,21,23}; int *p= ; for ( ; ;p++) { if (( )%4==0) printf("\n"); printf("%4d", ); } } 填空:输出二维数组元素的值 a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] …… p 1 3 5 7 9 11 13 输出结果: 1 3 5 7 9 11 13 15 17 19 21 23 a[0]或&a[0][0] p<a[0]+12 p-a[0] *p

将二维数组看成数组的数组 行地址 b|0 *(b+0 b+1 (b+1) 再将二维数组b看成由 b0J,b[两个元素组成的一维 数组,注意:b|0],b1存放的 是每行的首地址 6
6 将二维数组看成数组的数组 行地址 b+0 b+1 b[1] b[0] b 一维数组b[0] b[1][0] b[1][1] b[1][2] b[0][0] b[0][1] b[0][2] 一维数组b[1] 将二维数组的每一行看成一维数组 *(b+1) *(b+0) 列地址 b[0]+0 b[0]+1 b[0]+2 列地址 b[1]+0 b[1]+1 b[1]+2 *(b[0]+0) *(b[0]+1) *(b[0]+2) *(b[1]+0) *(b[1]+1) *(b[1]+2) 再将二维数组 b 看 成 由 b[0],b[1]两个元素组成的一维 数组,注意: b[0],b[1]存放的 是每行的首地址

指针与二维数组 列地址 行地址 b0]+0 b|0+1b|01+2 (b+0)+0*(b+0)+1“(b+0)+2 b+0 维数组bb010 b[01[1] b(01[21 b|0 (*(b+0)+0)*(*b+0)+1)*(*(b+0)+2) (b+0 列地址 b[1+0 b1H+1b1+2 b+1 *(b+1)+0*(h+1+1*(b+1+2 b1 维数组 b(1] b(11101 b1b|2 (b+1 ((+】+0)*((b+1)+1)*((b+1)+2) 一维数组b 7
7 指针与二维数组 行地址 b+0 b+1 一维数组b b b[1] *(b+1) b[0] *(b+0) 列地址 b[0]+0 b[0]+1 b[0]+2 *(b+0)+0 *(b+0)+1 *(b+0)+2 一维数组b[0] b[1]+0 b[1]+1 b[1]+2 *(b+1)+0 *(b+1)+1 *(b+1)+2 列地址 b[1][0] b[1][1] b[1][2] *(*(b+1)+0) *(*(b+1)+1) *(*(b+1)+2) b[0][0] b[0][1] b[0][2] *(*(b+0)+0) *(*(b+0)+1) *(*(b+0)+2) 一维数组b[1]

指针与二维数组 代表二维数组的首地址,指向第O行的首地址(行地址) b+i 指向第行的首地址(行地址) (b+i)或b[j 代表第行第0列的地址(列地址) (b+)+或b[j+j 代表第i行第j列的地址(列地址) ))或b[jj 表第行第j列的元素(数组元素)
8 指针与二维数组 ▪ b ▪ 代表二维数组的首地址,指向第0行的首地址(行地址) ▪ b+i ▪ 指向第i行的首地址(行地址) ▪ *(b+i) 或 b[i] ▪ 代表第i行第0列的地址(列地址) ▪ *(b+i)+j 或 b[i]+j ▪ 代表第i行第j列的地址(列地址) ▪ *(*(b+i)+j ) 或 b[i][j] ▪ 代表第i行第j列的元素(数组元素)

用数组名引用二维数组元素 元素b[jj的几种等价的引用方式 bLj] a^(b[j]+j) 如何用指针变量引 *C(b+)+j 用二维数组元素? ((b+i)Li
9 用数组名引用二维数组元素 ▪ 元素b[i][j]的几种等价的引用方式 ▪ b[i][j] ▪ *(b[i]+j) ▪ *(*(b+i)+j) ▪ (*(b+i))[j] •如何用指针变量引 用二维数组元素?

二维数组与指针 用指针指向二维数组,有两种指针: 列指针,这种指针指向二维数组的每一个 元素,它每加1,指向二维数组的下一个数 组元素。 行指针,这种指针指向二维数组的行,它 每加1,指向二维数组的下一行。 上边两种指针分别对应着对二维数组的 两种看法。 10
10 二维数组与指针 ▪ 用指针指向二维数组,有两种指针: ▪ 列指针,这种指针指向二维数组的每一个 元素,它每加1,指向二维数组的下一个数 组元素。 ▪ 行指针,这种指针指向二维数组的行,它 每加1,指向二维数组的下一行。 ▪ 上边两种指针分别对应着对二维数组的 两种看法
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第14讲 二维数组、二维数组做函数参数.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第13讲 指针与一维数组.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)习题7.ppt
- 重庆邮电大学:《C语言程序设计》课程作业讲评-goldbahe猜想.doc
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第11讲 数组与指针.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第10讲 一维数组与字符数组.ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第七章 符号计算.ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第六章 数值计算_matlab8.ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第五章 M文件(主讲:卢丹).ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第四章 数据和函数的可视化.ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第三章 字符串数组、元胞数组和构架数组.ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第二章 数值数组及其运算(2/2).ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第二章 数值数组及其运算(1/2).ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第一章 MATLAB基础准备及入门(2/2).ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第一章 MATLAB基础准备及入门(1/2).ppt
- 人民邮电出版社:《3ds max 7.0案例教程》第9章 灯光与摄像机.ppt
- 人民邮电出版社:《3ds max 7.0案例教程》第8章 材质的编辑和使用.ppt
- 人民邮电出版社:《3ds max 7.0案例教程》第7章 面片与NURBS建模.ppt
- 人民邮电出版社:《3ds max 7.0案例教程》第6章 合成建棋.ppt
- 人民邮电出版社:《3ds max 7.0案例教程》第5章 材质编辑器与贴图通道.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第16讲 动态内存分配&结构体.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第17讲 共用体&链表.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第18讲 文件.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第1讲 简介与hello world.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第20讲 位运算讲、位段、枚举变量、大型程序开发.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第2讲 简单C程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第3讲 多函数程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第4讲 作用域和选择结构程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第5讲 多分支和循环.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第6讲 循环和综合程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第7讲 综合程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第8讲 模块化程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第9讲 存储类型 宏定义 数组.ppt
- 重庆邮电大学:《C语言程序设计》课程授课计划一.doc
- 重庆邮电大学:《C语言程序设计》课程授课计划二.doc
- 湖南农业大学:《计算机组成原理教案》第二章 数据格式(蒋邵平).ppt
- 湖南农业大学:《计算机组成原理教案》第六章 总线的基本概念(蒋邵平).ppt
- 湖南农业大学:《计算机组成原理教案》第七章 显示器(蒋邵平).ppt
- 湖南农业大学:《计算机组成原理教案》第三章 存储系统(蒋邵平).ppt
- 湖南农业大学:《计算机组成原理教案》第五章 中央处理器(蒋邵平).ppt