第2讲 二维数组与指针.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
a+1与a[0]+1是不同的:a+1是序号为1的行的首地址,指向序号为1的行(相当于排长走到序号为1班的第一个战士位置);而*(a+1)或a[1]或a[1]+0都是指向1行0列元素(相当于序号为1班的第0个战士也是第一个战士位置),两者地址相同,但含义不同。 a、a[0]的值虽然相同,但是由于指针的类型不同(相当于排长和班长面对的对象一样,但意义不同),a是指向一维数组,a[0]指向a[0][0]元素,因此,进行加1运算,得到的结果是不一样的。 二维数组a是指向行的。在指向行的指针前面加一个*,就转换为指向列的指针。反之,在指向列的指针前面加一个,就转换为指向行的指针。 课后作业(课本P279) 课后习题10.9: 写一个函数,将一个3*3的整型矩阵转置。 课后习题10.11 : 在主函数中输入10个等长的字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串。 * * 第2讲二维数组与指针 复习:一维数组与指针 (1) 一维数组元素及其地址表示 (2) 指向一维数组元素的指针 (3) 函数的定义与调用 (4) 指针变量作函数参数 (5) 数组名作函数参数 新内容: (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 a 地址 int a[3]; 新内容:二维数组与指针 a[2][3] a[2][2] a[2][1] a[2][0] a[1][3

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档