2讲 二维数组与指针.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2讲二维数组与指针ppt课件

a+1与a[0]+1是不同的:a+1是序号为1的行的首地址,指向序号为1的行(相当于排长走到序号为1班的第一个战士位置);而a[0]+1是指向0行1列元素(相当于序号为0班的第1个战士)。 a、a[0]的值虽然相同,但是由于指针的类型不同(相当于排长和班长面对的对象一样,但意义不同),a是指向一维数组,a[0]指向a[0][0]元素,因此,进行加1运算,得到的结果是不一样的。 二维数组a是指向行的。在指向行的指针前面加一个*,就转换为指向列的指针。反之,在指向列的指针前面加一个,就转换为指向行的指针。 a+1与a[0]+1是不同的:a+1是序号为1的行的首地址,指向序号为1的行(相当于排长走到序号为1班的第一个战士位置);而a[0]+1是指向0行1列元素(相当于序号为0班的第1个战士)。 a+1表示走了一行, a[0]+1表示走了一列。 a、a[0]的值虽然相同,但是由于指针的类型不同(相当于排长和班长面对的对象一样,但意义不同),a是指向一维数组,a[0]指向a[0][0]元素。 二维数组a是指向行的。在指向行的指针前面加一个*,就转换为指向列的指针。反之,在指向列的指针前面加一个,就转换为指向行的指针。 * * 第2讲 二维数组与指针 复习:一维数组与指针 (1) 一维数组元素及其地址表示 (2) 指向一维数组元素的指针 新内容: (1) 二维数组的地址表示 (2) 指向二维数组的指针变量 (3) 指向数组的指针作函数参数 复习:一维数组元素及其地址表示 int a[5] = { 1, 2, 3, 4, 5 } ; a[4] a[3] a[2] a[1] a[0] 元素 a[4] a[3] a[2] a[1] a[0] 地址 *(a+4) *(a+3) *(a+2) *(a+1) *a 元素 a+4 a+3 a+2 a+1 a 地址 复习:指向一维数组元素的指针 int a[5] = { 1, 2, 3, 4, 5 } , *p; p=a; *(p+4) *(p+3) *(p+2) *(p+1) *p 元素 p+4 p+3 p+2 p+1 p 地址 a+4 a+3 a+2 a+1 a 地址 a[4] a[3] a[2] a[1] a[0] 元素 p=a[0]; 等价于 指针变量p与数组名a 都表示数组的首地址, 但数组名a是指针常量, 而p是指针变量 复习:指向一维数组元素的指针 p++合法, 但a++不合法, 因为a是地址常量, 不能改变, 而p 是一个指针变量, 可以改变 注意: (2) 要注意指针变量的当前值,保证它指向数组中有效的元素 (3) 注意指针变量的运算 ① *p++ ? *(p++) 先取p所指向的变量,再使p自加指向下一个变量 ③ (*p)++ 先取p所指向的变量,再使变量的值加1 ② *(p++) 与*(++p)不同, *(++p)是先使p自加指向下一个变量,再取其值 (4) 指针变量也可以加下标 p[i] ? a[i] ? *(p+i) #include stdio.h #define N 6 void main( ) { int a[N]={ 1, 3, 4, 6, 7, 9 }; int temp, m=(N-1)/2; int *p , *q , *t ; p=a; q=a+N-1; t=a+m; for( ; p=t; p++, q-- ) { temp=*p; *p=*q; *q=temp; } for( p=a; pa+N; p++ ) printf(“%3d”, *p ); printf(“\n”); } 9 7 6 4 3 1 a[0] a[1] a[2] a[3] a[4] a[5] a p 6 N a+5 q a+2 t 9 1 7 3 6 4 2 m temp 1 a+1 a+4 a+2 a+3 3 4 a+3 a+2 例:将数组a中的n个数按相反顺序存放 二维数组的地址 a[2] a[1] a[0] 二维数组名a表示二维数组的首地址, 也是第0行的首地址, a ? a[0] a, a[0] a+1, a[1] a+2, a[2] a+1代表第1行的首地址, a+1 ? a[1] a+2代表第2行的首地址, a+2 ? a[2] a[2] a[1] a[0] 元素 a[2] a[1] a[0] 地址 a+2 a+1

文档评论(0)

118zhuanqian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档