全国计算机等级考试实用应试教程二级C语言_第8章__指针.ppt_第1页
全国计算机等级考试实用应试教程二级C语言_第8章__指针.ppt_第2页
全国计算机等级考试实用应试教程二级C语言_第8章__指针.ppt_第3页
全国计算机等级考试实用应试教程二级C语言_第8章__指针.ppt_第4页
全国计算机等级考试实用应试教程二级C语言_第8章__指针.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本章要点:8.1变量的地址和指针8.2指针变量的定义和指针变量的基类型8.3给指针变量赋值8.4对指针变量的操作8.5函数之间地址值的传递,第8章指针,8.1变量的地址和指针1变量及其地址在C的程序中要定义许多变量,用来保存程序中用到的数据,包括输入的原始数据、加工的中间结果及最终数据。C编译系统会根据定义中变量的类型,为其分配一定字节数的内存空间(如字符型占1个字节,整型占2字节,实型占4字节,双精度型占8字节等),此后这个变量的地址也就确定了。,例如有变量定义语句:chara,intb,floatc;编译系统给变量分配的存储空间如图8-1所示。图8.1变量分配的存储单元与地址C语言规定,当一个变量占用一个字节时,该字节的地址就是该变量的地址,如果变量占用连续的多个字节,那么第一个字节的地址就是该变量的地址。,变量的地址起到了寻找变量的作用,好象是一个指针指向了变量,所以常把变量的地址称为“指针”。2指针变量若一个变量专用于存放另一个变量的地址(指针),则该变量称为指针变量。,指针的对象:当把变量的地址存入指针变量后,我们就可以说这个指针指向了该变量。变量的存取方法:直接存取和间接存取。,在C程序中,变量的地址可以通过运算符“使指针变量p中也存放了变量k的地址,也就是说指针变量p和q都指向了变量k。注意:在赋值号两边指针变量的基类型必须相同。(3)通过标准函数获得地址值可以通过调用库函数malloc和calloc在内存中开辟动态存储单元,并把所开辟的动态存储单元的地址赋给指针变量。,8.3.2给指针变量赋“空”值除了给指针变量赋地址值外,还可以给指针变量赋NULL值。例如:p=NULL;NULL是在stdio.h头文件中的预定义符。NULL的代码值为0,当p=NULL时,称p为空指针。因为NULL的代码值是0,所以上面语句等价于:p=0;或p=0;这时,指针p并不是指向地址为0的存储单元,而是具有一个确定的值“空”。企图通过一个空指针去访问一个存储单元时,将会得到一个出错信息。,8.4对指针变量的操作8.4.1通过指针来引用一个存储单元1取地址运算符(”返回的是数组元素a5的地址。(2)*运算符。为指针运算符,其作用是返回以操作对象的值作为地址的变量(或内存单元)的内容。,它们都是单目运算符,优先级高于所有的双目运算符,它们的结合性均是自右向左。在使用这两个运算符需要注意以下几点:(1)如果已经执行了“p=p=,间接访问运算符必须出现在运算对象的左边,其运算对象是地址或者是存放地址的指针变量。即*号右边也可以是地址值,如q=*(,8.4.2移动指针移动指针就是指对指针变量进行加上或减去一个整数、或通过赋值运算,使指针变量指向相邻的存储单元。因此,只有当指针指向一串连续的存储单元时,指针的移动才有意义。当指针指向一串连续的存储单元时,还可以和指向同一串连续存储单元的指针进行相减的运算,除此之外,不可以对指针进行任何其他的算术运算。,8.4.3指针比较在关系表达式中,可以对两个指针进行比较,即两个变量地址的比较。如:p,q是两个指针变量,if(pq)printf(“ppointstolowerthanq.n”);通常,两个或两个以上的指针指向同一目标时比较才有意义。,8.5函数之间地址值的传递8.5.1形参为指针变量时,实参和形参之间的数据传递指针可以作为参数在主调函数和被调函数之间传递数据8.5.2通过传送地址值,在被调用函数中直接改变调用函数中的变量的值,8.5.3函数返回地址值函数值的类型不仅可以是简单的数据类型,而且还可以是指针类型。其一般形式为:类型名*函数名(形式参数说明列表)以下是几点说明:(1)存储类型有两种,static和extern,默认为extern.(2)“*函数名”不能写成“(*函数名)”,否则就成了指向函数的指针。(3)此类函数的调用形式通常是:p=函数名(实际参数列表),其中p通常是调用函数中定义的一个指针变量。,例:以下函数把两个整数形参中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论