C语言程序设计 徐秋红 第8章指针新.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章 指针   指针 本章将从以下几个方面讲述指针的概念和作用: 指针与地址的关系 指针的定义与运算 指针在函数中的应用 指针在数组中的应用 指向指针的指针的含意和使用方法 指针在带参数的main函数中的作用 指针的定义 地址: 计算机系统为内存存储区的每一个存储单元(以字节为单位)分配有一个编号。 变量的地址: 变量的值: 指针: 存放变量地址的变量被称为“指针变量”,简称为“指针” 。 指针的定义 指针的定义 指针运算 取地址运算 通过取地址运算符“&”,获到一个变量的地址后赋给指针变量。“&”是单目运算符,它只能求变量或数组元素的地址,求地址运算是不能针对常量值或表达式的。 例如:  int  m=50, *p1, *p2;     p1=m; 指针运算 指针的赋值运算 指针变量在使用时必须有确定的指向,即指针变量应被赋予确定的地址。指针的赋值运算就是将该指针要指向的某个变量的地址赋给这个指针变量,使指针指向该变量。 float x=0, *p1, *p2; p1=x ; scanf(%f, p1); p2=p1; 指针运算 空指针 为了使指针变量有一个确定的数值,除了给指针变量赋一个地址值外,当指针变量没有指向的对象时,也可以给指针变量赋NULL值,此值为空值。例如: double *point;   point=NULL; 通过指针引用一个存储单元 一个指针变量的左侧带有一个“*”号时,这个“*”号的作用是取指针变量所指向地址的内容,或者可以理解为一个“*”号与其右边的指针变量构成的一个整体,可以代表这个指针所指向的存储单元。例如: float x= -3.35, y, *p; p=x; y=*p;   printf((\n x=%f , y=%f , *p, y); 通过指针引用一个存储单元 “*p”和“*x”又表示什么 ? 根据“”和“*”两个运算符的运算方向为右结合性,所以“*p”表达式相当于“(*p)”,因为“*p”就是整型变量x,所以“(*p)”就是“x”,即指针p;而“*x”表达式相当于“*(x)”,因为“x”就是p,所以“*(x)”就是“*p”,即变量x。 指针的运算 指针的算术运算有以下三种形式: 指针与整数的加减运算 指针的加1、减1运算 指针相减运算 指针的关系运算 指针与函数 指针做函数的参数 与普通变量一样,指针变量也可以作为函数的参数。当指针变量作为函数形参时,它的调用形式中的实参也应为指针变量。 指针与函数 【例1】 设计一个专门互换两个变量值的函数,其中函数的参量使用指针变量。 void swap(int *p, int *q) { int temp; temp=*p; *p=*q; *q=temp; } main() { int a, b, *ap=a, *bp=b; scanf (%d %d, ap, bp); printf( a=%d, b=%d, a,b); swap (ap, bp);    printf(\n a=%d, b=%d,a,b); } 使函数返回一个指针值 一般函数运行结束后都可以返回一个函数值,这个函数值可以是整型、实型、字符型等等,同样它也可以是一个指针类型的数值,即一个地址。 这种返回指针型数据的函数其定义形式是: 数据类型名 *函数名(参数表)   {  函数体  } 使函数返回一个指针值 【例2】(2003年4月二级C语言水平考试试题选择题)有程序: int *f(int *x, int *y) { if(*x*y) return x; /* 返回指针变量x */ else return y;     /* 返回指针变量y */ } main() { int a=7,b=8,*p,*q, *r; p=a; q=b; r=f(p,q); printf(%d,%d,%d \n,*p,*q,*r); } 执行后输出结果是________。 (A) 7,8,8 (B) 7,8,7 (C) 8,7,7 (D)8,7,8 指针与一维数组 数组的指针与数组元素的指针 数组的指针即是指数组的首地址,也就是数组元素下标为0的那个元素的地址。 C语言规定,数组名代表数组的首地址,所以,数组名实际上也是指针。 例如,以下四种数组说明语句是等价的: int x[15], *p=x ; int x[15], *p=x[0] ;  int x[15], *p; p

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档