- 1、本文档共156页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第09章指针教程
第09章 指针;第09章;温故;9.1 引例;9.1 引例;Q1:为什么会出现这种情况?
A1:C语言中函数调用过程的特点造成的单向值传递
Q2:如何使用函数得到正确的积和商呢?
A2:使用指针;9.1 引例;9.2 地址和指针的概念;9.2.1 地址和指针;9.2.2 内存单元的地址与内存单元的值;9.2.3 直接访问与间接访问;int i=3,j=6,k;;int i=3,j=6,k;;int i=3,j=6,k;;;9.2.3 直接访问与间接访问;指针
变量的地址(指针)
指针变量
指向
直接存取(访问)
间接存取(访问)
;指针
内存单元的地址
指向内存单元
变量的指针
变量的地址
变量的指针指向一个变量对应的内存单元;指针变量
地址变量
地址(指针)也是数据,可以保存在一个变量中
保存地址(指针)数据的变量称为指针变量
指向
一个指针变量保存了某个变量的地址(指针)
目标变量:被指向的变量
前提:指针变量的基类型与目标变量的类型相同;直接存取(访问)
变量名是“符号化”的变量的地址(指针)
通过变量名访问变量也就是通过变量的指针访问变量
这种访问方式叫做直接存取(访问);间接存取(访问)
两次直接存取
第一次
通过指针变量名获得目标变量的地址(指针)
第二次
通过目标变量的地址(指针)访问目标变量
拓展:多次
这种访问方式叫做间接存取(访问)
;9.3 指针变量;9.3.1 指针变量的定义;9.3.1 指针变量的定义;9.3.2 指针变量的引用;9.3.2 指针变量的引用;9.3.2 指针变量的引用;符号*出现在不同的场合中功能不同
① 出现在变量声明中 int *p;
② 出现在算术表达式中,并当作双目运算符来使用,如“2*3”,表示对2和3做乘法;
③ 出现在其他地方,例如上面的“*p”中,功能是用来访问指针变量所指向的变量。
;9.3.2 指针变量的引用;9.3.2 指针变量的引用;9.3.2 指针变量的引用;9.3.2 指针变量的引用;指针变量的内容不能是普通变量的值,只能是变量的地址,而且其基类型应与指针变量的基类型相同;9.3.2 指针变量的引用;通过指针变量引用其指向的变量时,指针变量必须有确定的值,或者说其必须有确定的指向。否则,会很容易造成非法内存访问错误而使程序异常终止。;9.3.2 指针变量的引用;思考题
如何避免例9.1中的情况?;Q:如何使用一个函数来交换两个变量的值?
A:使用变量的地址或指向变量的指针变量作为实参,使用基类型相同的指针变量作为形参;9.3.3 指针变量作为函数参数;9.3.3 指针变量作为函数参数;9.3.3 指针变量作为函数参数;Q:如何通过函数调用修改主调函数中的n个变量的值,或者说,使函数“返回”多个值?
A:具体操作步骤见P213
假设主调函数为main函数,被调函数为Func。;① 在main中定义n个变量。
② 在main中调用Func,实参分别是n个变量的地址,或指向这n个变量的指针变量。
③ 在Func函数定义中,使用与main中的n个变量的基类型相同的n个指针型变量作为形参。
④ 在Func函数体中,通过n个指针型形参修改其指向的n个变量。
⑤ 在main中使用调用Func后修改的n个变量。;输入3个整数,按由小到大的顺序输出。
要求:
(1)在主函数中输入3个整数
(2)在一个自定义的函数中交换两个整数
(3)在主函数中按由小到大的顺序输出这三个整数
(4)在调用和定义交换函数时,要交换的两个整数的指针作为实参;整型指针变量作为形参;9.4 指针与数组;9.4.1 一维数组与指针;9.4.1 一维数组与指针;9.4.1 一维数组与指针;一维数组在内存中占用一块连续的内存空间
一维数组名a表示这块内存空间的首地址,也就是数组元素a[0]的地址,且不能修改
一维数组名a是一个指针常量。
p = a[0]; ? p=a;
;9.4.1 一维数组与指针;9.4.1 一维数组与指针;9.4.1 一维数组与指针;9.4.1 一维数组与指针;9.4.1 一维数组与指针;9.4.1 一维数组与指针;若p指向数组的某个元素,则p+1、p-1、p+n、p-n所指位置可能已超出数组所占内存的范围。
这在语法上是允许的,但是通过它们不能正确引用数组元素。;9.4.1 一维数组与指针;9.4.1 一维数组与指针;确保两个指针相减有意义的前提:
这两个指针的基类型应该相同;9.4.1 一维数组与指针;9.4.1 一维数组与指针;9.4.1 一维数组与指针;9.4.1 一维数组与指针;9.4.1 一维数组与指针;9.4.1 一维数组与指针;9.4.1 一维数组与指针;9.4.1 一维数组与指针;9.4.1 一维数组与指针;9.4.1 一维数组与指针;9.
文档评论(0)