C语言-chap10pointer.pptVIP

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言-chap10pointer

第10章 本课要点( Targets ) 指针与地址的概念 指针变量的定义、初始化、引用 指针的运算 指针变量作为函数参数 C语言的数据类型 指针(pointer) 指针是C语言的重要数据类型,也是C语言的精华所在。 主要优点(用途): 指针作为函数参数,实现为函数间各类数据的传递提供简洁便利的方法。 更方便、更灵活地使用数组和字符串。 有效的表示复杂的数据结构,如链表,实现动态内存分配。 10.1 地址和指针的概念 10.2变量的指针和指向变量的指针变量 指针变量的定义包括3个内容: 其一般形式为: 基类型 * 指针变量名; 设有指向整型变量的指针变量p,如要把整型变量a 的地址赋予p可以有以下两种方式: (1) 指针变量初始化的方法 int a; int *p=a; (2) 赋值语句的方法 int a; int *p; p=a; 不允许把一个数直接赋予指针变量。 int *p; p=1000; 被赋值的指针变量前不能再加“ * ”说明符。 *p=a; 正确的用法: int i=200, x; int *p; p=i; x=*p; *p=90; 用指针变量对变量赋值 如: int i , j , *p; p=i; *p=3; j=*p+2; 指针变量不仅可以改变存放在它们之中的值,还可以改变它们所指向的变量的值。 如:int i,j,*p1,*p2; i=a; j=b; p1=i; p2=j; *p2=*p1; p2=p1; 指针变量的运算 1、指针变量初始化赋值 例: int a,*p=a; 2、指针变量取地址赋值 例: int a,*p ; p=a; 3、相同类型指针变量之间的赋值 例: int a,b,*p1,*p2; p1=a; p2=b; p1=p2; 4、指针变量取数组首地址的赋值 例: int a[5],*p; p=a; 对于指向数组的指针变量,可以加上或减去一个整数n。 指针变量加或减一个整数n的意义是把指针指向的当前位置(指向某数组元素)向后或向前移动n个数组元素的位置。 例: p1和p2是指向同一浮点数组的两个指针变量。 设p1的值为2010H,p2的值为2000H,而浮点数组每个元素占4个字节。 所以p1-p2的结果为 (2010H-2000H)/4=4, 表示p1和 p2之间相差4个元素(数组下标之差),即若p2指向数组a[2],则p1指向数组a[6]。 指针变量自增、自减运算 具有上述运算的特点,但有前置后置、先用后用的考虑,务请小心。 例如:int a[10], *p=a, *x; x=p++; /* x指向第一个元素, p指向第二个元素*/ x=++p; /* x、 p均指向数组的第二个元素*/ * p++相当于*(p+ +)。 *(p++)与(*p)++ 含义不同,前者表示地址自增,后者表示当前所指向的数据自增(内容自增)。 指向同一数组的两指针变量进行关系运算可表示它们所指数组元素之间的关系。 2. *a的含意是什么? 3. (*p)++相当于什么? 函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。 它的作用是将一个变量的地址传送到另一个函数中。 10.2.3 指针变量作为函数参数 函数形参是指针变量,实参也是指针变量 (举例1) 函数形参是指针变量,实参是变量地址 (举例2) 注1:在函数中进行对形参指针的交换不能影响到实参 (举例3 ) 注2:函数中交换值时不能使用无初值的指针变量作临时变量。(举例4) 请考虑调用下面的函数能否实现a和b互换? swap(int x,int y) { int temp; temp=x; x=y; y=temp; } void sub(int x, int y, int *z) { *z=y – x; } main() { int a,b,c; sub(5,10,a); sub(a,7,b); sub(b,a,c); printf(“%d,%d,%d\n”,a,b,c); } main() { int a,b,k=4,m=6; int *p1=k,*p2=m; a=p1= =m; b=(*p1)/(*p2)+7; printf(“a=%d\n”,a); printf(“b=%d\n”,b); } #inlude stdio.h m

文档评论(0)

ligennv1314 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档