网站大量收购独家精品文档,联系QQ:2885784924

C语言,第11章_指针-2(数组和指针).ppt

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言,第11章_指针-2(数组和指针)

* 指针(2) 内容提要 指针和数组间的关系 一维数组的地址和指针(回顾) 二维数组的地址和指针 指针数组 带参数的main函数 回顾 a a b b p 内存单元中的数据怎么存取? 两种方法: 1、变量名 例如: int a, b; a = 3; b = a; 2、内存单元地址 例如: int a, b, *p; p = a; *p = 5; a 指针与一维数组 回顾:一维数组的地址 1 2 3 4 5 6 a[0] a[1] a[2] a[3] a[4] a[5] 2000 2004 2008 2012 2016 2020 int a[6]; 一维数组的首地址:a 和 a[0] a, a[0] 指针与一维数组 回顾:指向一维数组的指针 int *p = a; 1 2 3 4 5 6 a[0] a[1] a[2] a[3] a[4] a[5] 2000 2004 2008 2012 2016 2020 p+1;p指向的地址后的一个元素的地址,p的指向并未改变 p++; 执行后p内将保存a[1],因此指针的指向是真正移动了 p 数组首地址 程序举例 P785.C程序的功能是:将读入的字符串s1、s2分别调用自定义函数myswap反转,然后调用自定义函数merge将s1、s2按排列的顺序交叉合并到s3中,s1或s2中过长的剩余字符接在s3的尾部。 二维数组的地址 例如: int a[3][4] = { {1, 3, 5, 7}, {9, 11, 13, 15}, {17, 19, 21, 23} }; a[0] a[1] a[2] a+0 a[0][0] a[0][1] a[0][2] a[0][3] 1 3 5 7 a[1][0] a[1][1] a[1][2] a[1][3] 9 11 13 15 a[2][0] a[2][1] a[2][2] a[2][3] 17 19 21 23 a+1 a+2 指针与二维数组 行指针-指向每一行 每行第0列元素的地址—指向每一行的第一个元素 a 代表二维数组的首地址,第0行的地址 a+i 代表第i行的地址 *(a+i) 即 a[i] a[i][0] 代表第i行第0列的地址 *(a+i)+j 即 a[i]+j 或 a[i][j] 代表第i行第j列的地址 *(*(a+i)+j ) 即 a[i][j] 代表第i行第j列的元素 行地址转变成列地址 行指针——指向由m个元素组成的一维数组的指针变量 p a[0][0] a[0][1] a[0][2] a[0][3] 1 3 5 7 a[1][0] a[1][1] a[1][2] a[1][3] 9 11 13 15 a[2][0] a[2][1] a[2][2] a[2][3] 17 19 21 23 int *p; (错误) int (*p)[4]; (正确) p=a (a为二维数组首地址,p为第0行地址) p+1:第一行地址 p+i:第i行地址 *(*(p+i) +j) a[i][j] 程序举例 P784.C程序的功能是:将3位学生4门课成绩读入并存储在二维数组score中,然后输出第n(约定n=2)个学生的成绩,要求用户编程部分对数组score及其元素的访问必须使用指针实现,即自定义函数头和函数体中不得出现数组下标形式的表示法。 指针数组 char *books[3]; books首先是一个数组 数组里面每个元素都是char *指针 books是一个数组,而数组名本身也是一个地址,所以要定义一个可以指向books指针数组的指针就必须是能指向指针的指针,即char **p = books; *(p+1) , 即是books[1] ,表示books指针数组中的第2个元素,当然它是一个指向char *的指针 books[0] p c + + \0 j a v a p y t h books books[1] books[2] \0 o h \0 为什么p要定义为char **p? *(p + 1) 和 books[1]是一样的吗? 一样 *(p + 1) (第二行的第一列的地址)和 *p + 1(首地址对应的值+1)是一样的吗? *(*(p + 1)) 值是多少? J 如何使用格式符%s输出“java”(即第二个字符串) 程序举例

文档评论(0)

2017meng + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档