- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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”(即第二个字符串) 程序举例
您可能关注的文档
- 5杜亚金—— 第九章 动态数列.ppt
- 6.2实数 第3课时(精华版).ppt
- 6.1物体的质量课件.ppt
- 6.3有补格.ppt
- 6.4 用百分数解决问题(二).ppt
- 6.3事情没那么简单 吴继兰.ppt
- 6-根本就不脏嘛.ppt
- 6.导数的几何意义.ppt
- 6同底数幂的乘法.ppt
- 6章_储能元件.ppt
- 2023咸阳职业技术学院招聘笔试真题参考答案详解.docx
- 2023四川化工职业技术学院招聘笔试真题及参考答案详解.docx
- 2023哈尔滨职业技术学院招聘笔试真题及参考答案详解.docx
- 2023商洛职业技术学院招聘笔试真题及答案详解1套.docx
- 2023呼伦贝尔职业技术学院招聘笔试真题参考答案详解.docx
- 2023南阳农业职业学院招聘笔试真题参考答案详解.docx
- 2023天津公安警官职业学院招聘笔试真题带答案详解.docx
- 2023年上海电机学院招聘笔试真题参考答案详解.docx
- 2023年四川艺术职业学院招聘笔试真题参考答案详解.docx
- 2023安徽体育运动职业技术学院招聘笔试真题及答案详解一套.docx
文档评论(0)