- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8.12.1 指向函数的指针变量 一个函数包括一系列的指令,在内存中占据一片存储单元,它有一个起始地址,即函数的入口地址,通过这个地址可以找到该函数,这个地址就称为函数的指针。 定义一个指向函数的指针变量的一般形式如下: 类型标识符 (*指针变量名)(); 例如: ? int (*p) ( ); ? 它表示p指向一个返回整型值的函数,注意*p两侧的括号不能省略,如果写成int *p( ):就成了返回指针值的函数了。 在线教务辅导网: 更多课程配套课件资源请访问在线教务辅导网 馋死 尚辅网 / C语言程序设计教程 计算机的内存是以字节为单位的一片连续的存储空间,每一个字节都有一个编号,这个编号就称为内存地址。内存的存储空间是连续的,内存的地址号也是连续的。一个变量实质上代表了“内存中的某个存储单元”。每个变量所占的存储单元都有确定的地址。具体的地址是在编译时分配的。若有定义 int a,b; float x 则系统为变量a,b,x分配内存空间情况如图所示。 对指针变量的定义包括三个内容: (1)指针类型说明,即定义变量为一个指针变量; (2)指针变量名; (3)变量值(指针)所指向的变量的数据类型。 其一般形式为: ? 类型说明符 *变量名; 指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值。未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机。指针变量的赋值只能赋予地址,决不能赋予任何其他数据,否则将引起错误。 在C语言中,变量的地址是由编译系统分配的,对用户完全透明,用户不知道变量的具体地址。 两个有关的运算符: ① :取地址运算符。 ② *:指针运算符(或称“间接访问”运算符)。 C语言中提供了地址运算符来表示变量的地址。 其一般形式为: ? 变量名; 如a表示变量a的地址,b表示变量b的地址。变量本身必须预先说明。 设有指向整型变量的指针变量p,如要把整型变量a 的地址赋予p可以有以下两种方式: (1)指针变量初始化的方法 int a; int *p=a; (2)赋值语句的方法 int a; int *p; p=a; 指针变量可出现在表达式中,设 ? int x,y,*px=x; ? 指针变量px指向整数x,则*px可出现在x能出现的任何地方。例如: ? y=*px+5;? /*表示把x的内容加5并赋给y*/ ? ?注意:当指针运算符与自加、自减运算符相邻出现在表达式时需按右结合方法确定优先级别。 函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。下面通过例子来说明。 例8.5: #include stdio.h void main() { void mov(int * ,int *); int x, y; mov(x, y); printf(%d, %d\n, x, y); } void mov(int * px, int * py) { *px=10; *py=20; } 运行情况: 10,20 8.6.1 一维数组指针的概念 变量有地址,数组包含若干元素,每个数组元素都在内存中占用存储单元,且是连续的存储单元,也有相应的地址。指针变量可以指向变量,自然也可以指向数组和数组元素。数组元素的指针就是数组元素的地址。。下面通过例子来说明。 8.6.2 数组元素地址作实参 当调用函数时,数组元素可以作为实参传给形参,和普通变量一样,对应的形参必须是类型相同的变量。数组元素的值可以传送给该变量,在函数中只能对该变量进行操作,而不能直接引用对应的数组元素。当数组元素的地址作为实参时,因为是地址值,所以对应的形参也应当是基类型相同的指针变量。 8.6.3 数组名作函数参数 指针可以作参数,数组名表示数组的首地址,所以数组名可以作函数参数。归纳起来,如果有一个实参数组,要在函数中改变此数组的元素的值,实参与形参的对应关系有以下4种情况: ①形参和实参都用数组名; ②实参用数组名,形参用指针变量; ③实参形参都用指针变量; ④实参为指针变量,形参为数组名。 应注意,如果用指针变量作实参,必须先使指针变量有确定值,指向一个已定义的数组。 8.7.1 二维数组地址的概念 在C语言中定义的二维数组实际上是一个一维数组,这个一维数组的每个成员又是一个一维数组。 8.7.2 通过建立一个行指针来引用二维数组元素 若有以下定义: ? int a[3][4],(*ptr)[4]; 在这里,说明符(*ptr)[4]中,由于一对圆括号的存在,所以*号首先与ptr结合,说明ptr是一个指针变量,然后再与说明符[4]结合,说明指针变量ptr的基类型是一个包含有四个int元素的数组。在这里,ptr的基
您可能关注的文档
最近下载
- 瓷砖胶品牌、瓷砖胶缺点、瓷砖胶禁忌.doc VIP
- 《杜邦分析法下公司盈利能力分析—以海澜之家为例》7500字.docx VIP
- 2025年高中数学奥林匹克竞赛试卷试题及答案解析.docx VIP
- 住房公积金政策知识竞赛题库附答案(150题).docx VIP
- EN 50618-2014 光伏系统用电缆.pdf VIP
- 边坡治理工程(抗滑桩、锚杆、锚索、挡板、冠梁)专项施工组织设计.doc VIP
- 畜牧兽医法律法规和职业道德(第二版)PPT课件(全).pptx VIP
- 人教版(新教材)七年级上册音乐第一单元《生活中的音乐》全单元教学课件课件.pptx
- 苏教版五年级上册《科学》全套教学课件(共486页PPT).pptx
- 欧洲知识点PPT课件.pptx
文档评论(0)