网站大量收购独家精品文档,联系QQ:2885784924

C语言程序设计ppt-第9章推荐.ppt

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

华中科技大学计算机学院 C语言程序设计 9.1 指针的概念与指针的使用 9.1.1 指针的概念 数据(变量、常量)(根据类型)占有一定数目的连续存储单元; 数据的连续存储单元首地址称为数据的地址。 变量的地址称为指针,存放地址数据的变量称为指针变量。 指针也是一种变量,也要占用一定的内存单元。指针的特殊之处在于它存放的是另一个变量所占存储单元的起始地址。 指针变量的类型由其基类型决定. 基类型是指针变量所指(即所指向)变量的数据类型。 因此,称指向某种类型变量的指针为该类型的指针。 如:指向整型变量的指针称为整型指针,指向字符型变量的指针称为字符指针等。 不管是何种类型的指针,所占的存储与机器字长相当.如:16位机,指针占2字节,… 思考: 为什么指针指针有类型? 9.1.2 指针的声明 声明指针的一般形式: T *标识符1,*标识符2,…, *标识符n; 其中,T是数据类型。*是指针说明符,用于将其说明的标识符说明为指针类型。标识符1,标识符2,…,标识符n是T类型的指针的名字. 例9.1: char *pc1,*pc2; int *pi; float *pf; 指针变量也可以在声明的时候对其进行初始化,但必须用所指变量的地址进行初始化。初始化后的指针将指向以初值为地址的变量。 例9.2 声明指针并初始化。 int x=10,*p=x; 错误的声明: int *p=x,x=10; 例9.3 给出以下一些复杂声明,解释其含义。 int (*p1)[3]; double *p2[5]; char (*fp)(int,int); int *pf(float a); int (*fp_ary[2])(char *,int *); 9.1.3 指针的使用 在声明指针变量的前提下,指针的使用首先要获取变量的地址作为指针值,然后要将该指针值赋给指针变量,建立指针变量与被指变量间的指向关系。接下来就是如何通过指针变量来间接访问和操作指针所指的变量。 1. 取地址运算符-单目 单目在C中表示取地址运算。该表达式的一般使用形式是: 右操作数 根据表达式的操作语义可知,右操作数必须是一个左值表达式。如果右操作数的类型是T,则表达式右操作数的类型是T *。 2. 指针的赋值 指针的声明只是创建了指针变量,获得了指针变量的存储,但并没有给出指针变量指向那个具体的变量,此时指针的值是不确定的随机值,指针处于“无所指”的状态。例如:用 int *p;语句来说明p是一个整型指针变量时,p的值是不确定的随机值。此时称p为悬挂指针。 例9.5 设有下面说明: int i,*pi; char c,*pc; float x[5],*pf; 则: pi=i; 取整型变量i的地址赋给整型指针变量pi. pc=c; 取出字符变量c的地址赋给字符指针变量pc. pf=x[0];和pf=x;的作用相同,均表示将x数组的起始地址赋给指针变量pf, 使pf指向x数组的第一个元素x[0]。 数组名x的数据类型是float *,并且标识x数组的起始地址,因此语句pf=x;合法有效。 3. 间访运算符单目* 声明指针的目的是希望通过指针实现对内存中变量的快速访问,必须使用单目*这个间访运算符才能实现利用指针对内存变量的访问。间访的含义是间接访问。单目*运算实际上是单目运算的逆运算. 使用单目*间访变量的一般形式是: *操作数 “*操作数”称为间访表达式,它的操作语义是引用以操作数之值为地址的变量。操作数也可以是表达式,但其值必须是地址值。 间访表达式的值是一个左值,代表指针所指的变量。而指针所指的变量的类型就是间访表达式运算结果的类型。 例9.6 间访运算符的基本操作举例。 设有声明和赋值: char ch=’a’,*pc=ch; *pc=’b’; 并且假设字符变量ch的地址是0x1b2a,试问ch,pc,以及*pc的值是什么? 4. 无值型指针 类型为void *的指针称为无值型指针或void指针。C语言规定,任何类型的指针都可以将其值赋给void指针,但是不能对void指针执行间访操作,即对void指针施行“*”操作属于非法操作。 int x=1,*px=x; char ch=ˊaˊ,*pc=ch,*pc1; void *vp; 则:vp=px; vp=pc; pc1=(char *)vp; *vp=ˊbˊ;

文档评论(0)

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

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

1亿VIP精品文档

相关文档