- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 指针 6.2 指针与数组(续) 指向二维数组的指针 6.4指针数组和指向指针的指针 练习 使用指针编程: 1.将输入的字符串中的空格删除后,输出。 2.连接两个字符串。 * * 6.3字符串与指针 6.2.3指向二维数组的指针 二维数组的地址 『例6.12』int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; 将二维数组a看作3个元素的一维数组{a[0], a[1], a[2]},其中每一个元素又是一个一维数组,如a[0]: {a[0][0], a[0][1], a[0][2], a[0][3]}。 a是数组{a[0], a[1], a[2]}的首地址,a+1…… a[0]是数组{a[0][0], a[0][1], a[0][2], a[0][3]}的首地址,a[1]…… a[0]+1是元素a[0][1]的地址,…… a[2] 2016 a[1] 2008 a[0] 2000 12 11 10 9 → → a+2 2022 2020 2018 2016 8 7 6 5 → → a+1 2014 2012 2010 2008 4 3 2 1 → → a 2006 2004 2002 2000 ↓ ↓ ↓ ↓ a[0]+3 a[0]+2 a[0]+1 a[0] 2016 a[2] → a+2 2008 a[1] → a+1 2000 a[0] → a 4 3 2 1 2006 a[0][3] → a[0]+3 2004 a[0][2] → a[0]+2 2002 a[0][1] → a[0]+1 2000 a[0][0] → a[0] a:首行地址2000 a+i:第i行地址 *a:列地址,第0行第0列地址2000,即a[0],则*a+1=a[0][1] *(a+i):第i行,第1列地址,即a[i] a[i]:列地址,第i行第0列地址,即a[i][0] a[i]+j:列地址,第i行第j列地址,即a[i][j] *(a+2)+2 代表什么? *(a+i) = a[i] *a = a[0] *(a+1) = a[1] …… a[i]+j = a[i][j] a[0]+1 = a[0][1] a[2]+2 = a[2][2] …… ↑ ? ↑ a[0][0] 12 11 10 9 8 7 6 5 4 3 2 1 a[2][3] a[2][2] a[2][1] a[2][0] a[1][3] a[1][2] a[1][1] a[1][0] a[0][3] a[0][2] a[0][1] a[0][0] 第 1 行 第 2 行 第 3 行 a[0][0]+7 a[i][j]:a[0][0]+4*i + j 注:4为每行元素个数 通过地址存取二维数组的元素 第i 行第i 列的元素可以采用下列表示方式: a[i][j] (*(a+i) )[j] *( a[i]+j ) *( *(a+i)+j ) *( a[0][0]+4*i+j) 『例6.13』 main( ) { int i, j, a[][5] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; printf(%5d\n, *(a[1]+4) ); printf(%5d\n, --*(*a+3) ); (*(a+1))[1] += 5; *(a[0][0]+5*2+3) = 55; for (i=0; i3; i++) { for (j=0; j5; j++) printf(%5d, a[i][j]); printf(\n); } } a[0]+4 a[0]+3 a[0]+2 a[0]+1 a[0]+0 a[2] a[1] a[0] 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 3 12 55 运行结果: 10 3 1 2 3 3 5 6 12 8 9 10 11 12 13 55 15 通过指向数组元素的指针变量存取元素 『例6.14』int i, j, *p, a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; p = a[0][0]; /*p指向二维数组元素*/ 等价关系: p = a[0][0] ←→ p = *a ←→p = a[0] a[i][j]可用下列形式表示: a[i][j] = *(p+4*i+j) a[i][j] = p[4*i+j] 注:
您可能关注的文档
最近下载
- 痕迹检验复习试题有答案.doc
- 未成年人充值退款起诉书.docx VIP
- 2025年中国移动校园招聘考试笔试题库历年考试试题及答案.docx VIP
- 定量CT在健康管理中的应用指南(2024).pdf
- 《网约车运营管理》教学课件4-5 潜在客户分析及客户忠诚度提升.ppt VIP
- 排水泵房安全检查表.docx
- 我国实现双碳目标面临的现实挑战与对策建议.docx VIP
- 农技指导油菜机械化播栽与收获技术.pdf
- 第15课+列强入侵与中国人民的反抗斗争【中职专用】《中国历史》(高教版2023基础模块)-20240416165039.pptx
- 仁爱八年级下册Unit6Topic3SectionC优质公开课.ppt VIP
文档评论(0)