- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
引子 二维数组的行、列地址 指针的算术运算 指针函数与函数指针的区别 指针数组的使用 地址和指针的概念 内存是以字节为单位的一片连续存储空间,每个字节都有一个唯一的编号,这个编号称为内存的“地址” 例如 直接访问:按变量地址存取变量值 间接访问:通过存放变量地址的变量去访问变量 指针是内存地址,指针变量只能存放指针,而不能存放其他数据。二者有一定的区别,但为方便起见,在不引起混淆的情况下,经常将指针变量简称为指针。 指针变量与普通变量一样,也具有变量的三要素:变量名、变量类型和变量的值。进一步说明如下 指针变量名要符合标识符的命名规则 指针变量的类型是“基类型 *” 指针变量所指向的对象可以是变量,也可以是内存中的一个连续区域 指针变量的赋值 指针变量与普通变量一样,在定义的同时,可进行初始化 例如: 指针变量的引用 取地址运算符“” 指针运算符“*” 注:指针运算符“*”也称“间接访问”运算符或间址运算符,也是单目运算符,运算对象为地址,用来求指针变量所指变量的值。 例如 关于运算符“”和“*”,应注意 “”和“*”两个运算符的优先级别相同,按自右向左方向结合 (*p)++和*p++的不同 指针与一维数组 指向数组元素的指针 指向数组元素的指针的定义方法与指向普通变量的指针的定义方法相同 例如 数组名a就是a[0]的地址 p=a[0]与p=a等价 可以通过初始化的方法使指针p指向数组a的元素 如: int *p=a[0];或:int *p=a; 通过指针引用数组元素 指针法 有*(a+i)和*(p+i)两种表现形式,都是用间接访问的方法来访问数组元素 下标法 有a[i]和p[i]两种形式。实际上,在编译时,这两种形式也要处理成*(a+i)或*(p+i),即先按“a+i*“一个元素占用字节数”计算出第i号元素的地址,然后得到该元素的值 等价形式 例如 指针的算术运算和关系运算 指针的算术运算(指针移动、指针相减) 当指针指向一串连续的存储单元(如一个数组)时,指针的算术运算才有意义,注意: 计算*p++时,由于“++”和“*”优先级相同,结合方向为自右向左,因此它等价于*(p++)。计算过程是先用p保存的地址值进行“*”运算,得到*p,然后再用p+1赋予p 区分*(p++)与*(++p)的不同,关键是理解++p与p++的不同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p初值为a(即a[0]),则*(p++)是a[0]的值,而*(++p)是a[1]的值。与此类似的还有*(p--)与*(--p)。将“++”和“--”运算符用于指针变量十分有效,可以使指针变量自动向前或向后移动,指向下一个或上一个数组元素。 (*p)++表示p所指向的元素值加1,如果有p=a;且a[0]=8;,则(*p)++的值为9。 基类型相同的两个指针可以相减,但不能相加。若指针p1、p2都指向同一数组a的元素,且p2在p1的后面,则p2-p1就是p1与p2之间的元素的个数。 例如 指针与二维数组 二维数组的地址 如果整型二维数组a的定义为: int a[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}}; 假定数组a的首地址为1000,则各数组元素的值及其地址可用图表示。 二维数组a及其三个一维数组可表示如下 二维数组 int a[3][4], a-----二维数组的首地址,即第0行的首地址 a+i-----第i行的首地址 a[i] ? *(a+i)------第i行第0列的元素地址 a[i]+j ? *(a+i)+j -----第i行第j列的元素地址 *(a[i]+j) ? *(*(a+i)+j) ? a[i][j] 例如:输出二维数组有关的值 指向二维数组的指针变量 指向二维数组元素的指针变量 指向二维数组元素的指针变量与指向普通变量的指针变量相似 例如 指向二维数组行的指针变量 例如 形式如表所示 指向字符数组的指针变量 字符数组可以存放字符串,数组名就是字符串的首地址 形如char *cp; 与 char str[20]; str由若干元素组成,每个元素放一个字符;而cp中存放字符串首地址 例如 指向字符串常量的指针变量 每一个字符串常量都分别占用内存中一片连续的存储区 域,这些连续的存储区域是由编译系统分配的,实际上就是 字符型一维数组,只是没有名字而已。可以将这些连续存储区域的首地址赋给字符型的指针变量,使之指向字符串常量(准确地讲是指向该字符串常量的第一个字符)。这样的指针变量称为字符串指针 字符数组与字符型指针变量有以下几点异同 字符数组由若干个元素组成,每个元素就是一个字符;
您可能关注的文档
- C语言程序设计 第2版 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 安俊秀 第5讲 算法1.ppt
- C语言程序设计 第2版 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 安俊秀 第6讲 选择结构程序设计.ppt
- C语言程序设计 第2版 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 安俊秀 第6讲 选择结构程序设计--三角形判断.ppt
- C语言程序设计 第2版 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 安俊秀 第6讲 选择结构程序设计--三角形判断1.ppt
- C语言程序设计 第2版 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 安俊秀 第8讲 数组.ppt
- C语言程序设计 第2版 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 安俊秀 第8讲 数组1.ppt
- C语言程序设计 第2版 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 安俊秀 第9讲 函数1.PPT
- C语言程序设计 第2版 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 安俊秀 第9讲 函数2.PPT
- C语言程序设计 第2版 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 安俊秀 第9讲 函数21.PPT
- C语言程序设计 第2版 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 安俊秀 第10讲 编译预处理.ppt
- C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 贾宗璞 许合利 c11 文件.ppt
- C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 贾宗璞 许合利 c12 C++基础.ppt
- C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 贾宗璞 许合利 c13 VC环境.ppt
- C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 赵山林 高媛 第八章 数组.ppt
- C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 赵山林 高媛 第七章 指针.ppt
- C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 赵山林 高媛 第十一章 位和位段.ppt
- C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 赵山林 高媛 第四章 选择结构程序设计.ppt
- C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 赵山林 高媛 第五章 循环结构程序设计.ppt
- C语言程序设计 配套课件 作者 朱立华 王立柱 C语言程序设计课件第1章090909.ppt
- C语言程序设计 配套课件 作者 朱立华 王立柱 C语言程序设计课件第3章091013.ppt
文档评论(0)