全国计算机等级考试实用应试教程二级c语言_第8章__指针

全国计算机等级考试实用应试教程二级c语言_第8章__指针

ID:32001342

大小:312.00 KB

页数:20页

时间:2019-01-30

全国计算机等级考试实用应试教程二级c语言_第8章__指针_第1页
全国计算机等级考试实用应试教程二级c语言_第8章__指针_第2页
全国计算机等级考试实用应试教程二级c语言_第8章__指针_第3页
全国计算机等级考试实用应试教程二级c语言_第8章__指针_第4页
全国计算机等级考试实用应试教程二级c语言_第8章__指针_第5页
资源描述:

《全国计算机等级考试实用应试教程二级c语言_第8章__指针》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、本章要点: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变

2、量分配的存储单元与地址C语言规定,当一个变量占用一个字节时,该字节的地址就是该变量的地址,如果变量占用连续的多个字节,那么第一个字节的地址就是该变量的地址。变量的地址起到了寻找变量的作用,好象是一个指针指向了变量,所以常把变量的地址称为“指针”。2.指针变量若一个变量专用于存放另一个变量的地址(指针),则该变量称为指针变量。指针的对象:当把变量的地址存入指针变量后,我们就可以说这个指针指向了该变量。变量的存取方法:直接存取和间接存取。直接存取:直接根据变量名存取数据。间接存取:通过指针变量存取相应变量的数据。在C程序中,变量的地址可以通过运算符“&”来得

3、到,该运算符称为“取地址”运算符,它的运算对象是变量或数组元素,得到的结果是变量或数组元素的地址。例如:inta,b[10];&a:得到的是变量a的地址&b[5]:得到的是数组元素b[5]的地址在C语言中,指针被广泛应用,它和数组、字符串、函数间数据的传递等有着密不可分的联系。8.2指针变量的定义和指针变量的基类型1.指针变量的定义与初始化定义指针变量的一般形式为:类型名*指针变量名1,*指针变量名2,…;其功能是定义指向给定“数据类型”的变量或数组元素的指针变量,同时给该变量赋“初值”。存储类型指出该指针变量的存储类型。定义时也可以给其赋初值,格式为:

4、*指针变量名[=初值];例如:int*pi,*pj=&a;2.指针变量的基类型一个指针变量中存放的是一个存储单元的地址值。这里的“一”所代表的字节数是不同的:对整型而言,它代表2个字节;但对实型而言,它就代表4个字节。这即是不同基类型的含义。后面的章节中涉及到指针的移动,也就是要对地址进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。因此对于基类型不同的指针变量,其内容增1、减1所“跨越”的字节数是不同的。8.3给指针变量赋值8.3.1给指针变量赋地址值一个指针变量可以通过以下三种方式获得一个确定的地址,从而指向一个具体的对象。(1)通

5、过求地址运算(&)获得地址值一般格式为:指针变量名=地址表达式例如:intk,*p,*q;q=&k;(‘&’为求地址运算符)此时,变量k的地址赋予了q,也可以说q指向了k。(2)通过指针变量获得地址值可以通过赋值运算,把一个指针变量中的地址值赋给另一个指针变量,从而使这两个指针变量指向同一地址。例如,若有以上定义,则语句:p=q;使指针变量p中也存放了变量k的地址,也就是说指针变量p和q都指向了变量k。注意:在赋值号两边指针变量的基类型必须相同。(3)通过标准函数获得地址值可以通过调用库函数malloc和calloc在内存中开辟动态存储单元,并把所开辟的

6、动态存储单元的地址赋给指针变量。8.3.2给指针变量赋“空”值除了给指针变量赋地址值外,还可以给指针变量赋NULL值。例如:p=NULL;NULL是在stdio.h头文件中的预定义符。NULL的代码值为0,当p=NULL时,称p为空指针。因为NULL的代码值是0,所以上面语句等价于:p=’’;或p=0;这时,指针p并不是指向地址为0的存储单元,而是具有一个确定的值——“空”。企图通过一个空指针去访问一个存储单元时,将会得到一个出错信息。8.4对指针变量的操作8.4.1通过指针来引用一个存储单元1.取地址运算符(&)和指针运算符(*)与指针有关的运算符

7、主要有两个,分别是“取地址运算符(&)”和“指针运算符(*)”。(1)&运算符。为取地址运算符,其作用是返回操作对象(变量或数组元素)的地址。例如,“&x;”返回变量x的地址,“&a[5];”返回的是数组元素a[5]的地址。(2)*运算符。为指针运算符,其作用是返回以操作对象的值作为地址的变量(或内存单元)的内容。它们都是单目运算符,优先级高于所有的双目运算符,它们的结合性均是自右向左。在使用这两个运算符需要注意以下几点:(1)如果已经执行了“p=&a;”语句,若有&*p由于“&”和“*”两个运算符的优先级别相同,但按自右向左方向结合,因此先运算*p,它

8、就是变量a,再执行&运算。因此它等同于&a。(2)*&a的含义是a。因为先进行&

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。