第12章 指针.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十二章 指针 12.1 指针与指针变量  如:int a=1, b=2;   float x=3.4, y = 4.5 ;   double m=3.124;   char ch1=a‘, ch2=b; 12.1 指针与指针变量  指针定义的格式: 类型说明符 *指针名; *表示这是一个指针变量,  变量名即为定义的指针变量名;  类型说明符表示本指针变量所指向的变量的数据类型,也就是说一个指针变量只能指向同一类型的变量。  如:int *p1;   表示p1是一个指针变量,它的值是某个整型变量的地址。或者说p1指向一个整型变量。至于p1究竟指向哪一个整型变量,应由向p1赋予的地址来决定。 赋值形式: 变量名;  &:取地址符  a表示变量a的地址,b表示变量b的地址。变量本身必须预先说明。 指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值。未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机。 指针变量的赋值只能赋予地址,决不能赋予任何其它数据,否则将引起错误。 设有指向整型变量的指针变量p,如要把整型变量a 的地址赋予p可以有以下两种方式: 1)指针变量初始化的方法   int a;   int *p=a; 2)赋值语句的方法    int a;  int *p;   p=a; 不允许把一个数赋予指针变量,下面的赋值是错误的: int *p; p=1000; 被赋值的指针变量前不能再加“*”说明符,如写为*p=a 也是错误的。 指针变量只能进行赋值运算和部分算术运算及关系运算。 (1)取地址运算符:是单目运算符,其结合性为自右至左,其功能是取变量的地址。 (2)取内容运算符*:是单目运算符,其结合性为自右至左,用来表示指针变量所指的变量。在“*”运算符之后跟的变量必须是指针变量。 注意:在指针变量说明中,“*”是类型说明符,表示其后的变量是指针类型。而表达式中出现的“*”则是一个运算符用以表示指针变量所指的变量。 [例12.1]指针变量程序举例。 main( ) { int *p1,*p2,i1,i2; scanf(“%d, %d”,i1,i2); p1=i1; p2=i2; printf(“%d, %d\n”,*p1,*p2); p2=p1; printf(“%d, %d\n”,*p1,*p2); } 若输入: 3,5 则输出: 3,5 3,3 [例12.2] 从键盘输入两个整数,按由大到小的顺序输出。 main( ) { int *p1,*p2,a,b,t; scanf(%d ,%d ,a,b) ; p1=a; p2=b; if(*p1*p2) { t=*p1;*p1=*p2;*p2=t;} printf(%d,%d\n,a,b) ; } 使用指针类型做函数的参数,实际向函数传递的是变量的地址。由于函数中获得了所传递变量的地址,在该地址空间的数据当函数调用结束后被物理地保留下来。因此,如果希望函数间传递的是地址,实参用变量的地址或指针变量,形参用指针变量。 [例12.3] 利用指针变量作为函数的参数,用函数的方法再次实现上述功能。 main ( ) {  void change(); int *p1,*p2,a,b,*t; scanf(%d,%d,a,b) ; p1=a; p2=b; change(p1,p2); / *函数调用* / printf(%d,%d\n,*p1,*p2); } void change(int *pt1,int *pt2) { int t; if(*pt1*pt2) { t=*pt1;*pt1=*pt2;*pt2=t; } return; } 指向数组元素的指针变量的定义与指向变量的指针变量的定义相同  如:int a[10];   int *p; 对该指针元素赋值: p=a[0];   把a[0]元素的地址赋给指针变量p,即p指向a数组的第0号元素, 数组名代表数组的首地址,也就是第一个元素的地址。因此,p=a[0];与p=a;等价。

文档评论(0)

word.ppt文档 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档