C语言教学 第11章.ppt

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

【范例11-4】 使用函数实现对输入的两个整数按从大到小顺序排序输出。 point2 存储数据b 变量 b 2 point1 存储数据a 变量 a 1 p2 存储数据b point2 存储数据b 变量 b 2 p1 存储数据a point1 存储数据a 变量 a 1 调用swap函数前,指针指向如图所示 调用swap函数,把实参point1和point2传递给了形参p1和p2后,执行swap函数前,指针指向如图所示。 p1 存储数据a point1 存储数据a 变量 a 2 p2 存储数据b point2 存储数据b 变量 ,b 1 point2 存储数据b 变量 b 1 point1 存储数据a 变量 a 2 交换函数执行后,调用并执行swap函数,在还没有返回到主函数前,这里交换的变量a和b的值,point1和point2,p1和p2的指向并没有变,还是指向原来的存储单元,但是a和b变量的值发生了交换,指针指向如图所示。 调用swap函数后,主函数输出结果,指针指向如图所示。 【拓展训练】 02 void swap(int *p1,int *p2) /*形参为指针变量*/ 03 { 04 int *temp; /*临时量*/ 05 temp=p1; /*把指针p1所指向的地址中的值暂存在temp中*/ 06 p1=p2; /*把指针p2所指向的地址中的值存在p1错指向的地址中*/ 07 p2=temp; /*把temp中值存储到p2所指向的地址中*/ 08 printf(swap函数中的输出\n); 09 printf(*p1=%d,*p1=%d\n,*p1,*p2); 10 } p1 存储数据a point1 存储数据a 变量 a 1 p2 存储数据b point2 存储数据b 变量 b 2 p2 存储数据a point1 存储数据a 变量 a 1 p1 存储数据b point2 存储数据b 变量 b 2 调用swap函数,把实参point1和point2传递给了形参p1和p2后,执行swap函数前: 交换函数执行后,调用并执行swap函数,在没有返回到主函数前: 针的运算就是地址的运算。由于这一特点,指针运算不同于普通变量,只允许有限的几种运算。除了可以对指针赋值外,指针的运算还包括移动指针、两个指针相减、指针与指针或指针与地址之间进行比较等。可以通过将指针加减一个整数,或者通过对指针赋值来移动指针。 例如:p+n、p-n、p++、p--、++p和--p等,其中n是整数。 将指针p加上或者减去一个整数n,表示p向地址增加或减小的方向移动n个元素单元,从而得到一个新的地址,使能访问新地址中的数据。每个数据单元的字节数取决于指针的数据类型。 如下图所示,变量a,b,c,d和e都是整型数据int类型,它们在内存中占据一块连续的存储区域,地址从1234到1253,每个变量占用4个字节。指针变量p指向变量a,也就是p的值是1234,那么p+1按照上面的描述,表示p向地址增加的方向移动了4个字节,从而指向一个新的地址,这个值就是1238,指向了变量b(变量从a到e占用一块连续的存储区域),同理p+2地址就是1242,再次增加了4个字节,指向了变量c,依次类推。 【范例11-5】 指针变量自身的运算 01 #include stdio.h 02 int main(void) 03 { 04 int a=1,b=10; 05 int *p1,*p2; 06 p1=a; /*指针赋值*/ 07 p2=b; 08 printf(p1地址是%d,p1存储的值是%d\n,p1,*p1); /*输出*/ 09 printf(p2地址是%d,p2存储的值是%d\n,p2,*p2); /*输出*/ 10 printf(p1-1地址存储的值是%d\n,*(p1-1)); /*地址-1后存储的值*/ 11 printf(p1地址中的值-1后的值是%d\n,*p1-1); /*值-1后的值*/ 12 printf(*(p1-1)的值和*p1-1的值不同\n); 13 return 0; 14 } 11.3.1 指向函数的指针 11.3.2 返回指针的函数 用指针变量可以指向一个函数。函数在程序编译时被分配了一个入口地址。这个函数的入口地址就称为函数的指针。 函数指针变量常用的用途之一是把指针作为参数传递到其他函数。指向函数的指针也可以作为参数,以实现函数地址的传递,这样就能够在被调用的函数中使用实参函数。 【范

文档评论(0)

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

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档