C语言编程 第8章 指针

C语言编程 第8章 指针

ID:43187665

大小:722.50 KB

页数:83页

时间:2019-10-02

C语言编程 第8章  指针_第1页
C语言编程 第8章  指针_第2页
C语言编程 第8章  指针_第3页
C语言编程 第8章  指针_第4页
C语言编程 第8章  指针_第5页
资源描述:

《C语言编程 第8章 指针》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第八章指针关键:(1)变量使用的两种方式(2)指针定义与使用时形式相同但含义不同(3)指针的各种运算(4)数组名与指针变量的区别(5)要通过一个函数改变多个值的方法预备知识内存:就是内部存储器,是由存储单元组成的。它的特点是存储单元是线性连续的。存储单元的最小单位是字节。1.内存的概念地址:为了访问内存中的某个存储单元,我们要为它编号,这种编号称为内存地址。通过地址我们就能够访问该地址所标识的存储单元。2.地址的概念变量的地址:变量在内存中总占用几个连续的字节,开始字节的地址,就是变量的地址。2007存储单元指针为函数提供修改变量值的手段指针为C的动

2、态内存分配系统提供支持指针为动态数据结构(如例链表、队列、二叉树等)提供支持指针可以改善某些子程序的效率为什么引入指针的概念学习原则一定要学会其实通常的应用很简单与使用变量几乎无异使用原则永远要清楚每个指针指向了哪里永远要清楚指针指向的位置是什么关于指针的原则§8.1指针及其相关概念指针:一个变量的地址称为该变量的指针。指针变量:若一个变量专用于存放另一个变量的地址(指针),则该变量称为指针变量。指针的指向:当把变量的地址存入指针变量后,我们就可以说这个指针指向了该变量。变量的存取方法:直接存取和间接存取。直接存取:直接根据变量名存取数据。间接存取:

3、通过指针变量存取相应变量的数据。§8.2变量的指针和指向变量的指针变量一、指针变量的定义一般形式:类型标识符*变量名;例如:int*ptr1,*ptr2;指针变量的类型:指明了该指针指向的内存空间所存储的数据类型。在定义指针变量时要注意以下几个问题:⑴变量名ptr2前面的“*”不能省略,如果写成int*ptr1,ptr2;则ptr2被定义为整型变量,而非整型指针变量。⑵定义中的“*”表示所定义的变量是指针变量,但指针变量名是ptr1、ptr2,而非*ptr1、*ptr2。⑶指针变量只能指向定义时所规定类型的变量。这个规定的类型称为该指针变量的“基类型

4、”。如:上例中ptr1、ptr2只能指向整型变量,不能指向实型或字符型变量。其“基类型”相同,都是整型。⑷定义指针变量后,并未确定该变量指向何处。也就是说该变量的值是不确定的。在引用指针变量前必须首先让它指向一个变量,这一点非常重要。共性在内存中占据一定大小的存储单元先定义,后使用特殊性它的内容只能是地址,而不能是数据必须初始化后才能使用,否则指向不确定的存储单元只能指向同一基类型的变量可参与的运算:加、减一个整数,自增、自减、关系、赋值指针变量与其它类型变量的对比二、指针变量的运算㈠指针运算符(“&”和“*”)“&”(地址运算符):取变量的存储地址

5、。“*”(引用运算符):是取指针所指向变量的内容。例如:&a是求变量a的地址。ptr指向了i变量,*ptr表示i的值,即3我们还可以用这种方法实现对变量的改变:*ptr=15;等价于i=15;由此可见:通过指针运算符“*”可以引用一个变量。如:当ptr已经指向变量i后,*ptr就等同于i。进一步理解“&”和“*”:“&”运算和“*”运算是一对互逆运算。&*ptr&iptr*&i*ptri等价于㈡指针的赋值运算(=)指针的赋值运算:就是把地址赋值给指针变量。指针的赋值运算可以是以下三种方式:⑴使用取地址运算符,把地址值赋值给指针变量。如:inti,*p

6、i;pi=&i;⑵把指针变量的值赋给另一个指针变量。如:inti,*pa,*pb;pa=&i;pb=pa;⑶给指针变量赋值为符号常量NULL。说明:NULL是一个空指针,表示该指针变量的值没有意义。作用是为了避免对没有被初始化的指针变量的非法引用。NULL的定义在“stdio.h”中。如:int*pi;pi=NULL;说明:⑴在定义指针变量时,可以立即将一个地址值赋给指针变量,这就是指针变量的初始化。指针变量的初始化也是指针的赋值运算。如:floatflt,*f_ptr=&flt;注意:这不是给*f_ptr赋值。⑵指针变量间的赋值和引用应保证基类型相

7、同。若有定义:int*p,i;float*q,x;则:q=&i;╳p=&x;╳㈢移动指针的运算指针的加减运算(+、-)指针的自加自减运算(++,--,+=,-=)1.指针的+、-运算指针±整数指针-指针+、-说明:⑴指针与整型值加减的结果是指针,表示使该指针指向该指针下移或上移存储单元个数(整型值)之后的内存地址。存储单元的大小就是该指针的数据类型所需的内存大小。例如:ptr+n(指针ptr,n为整数)这个指针值代表的内存单元的地址是:ptr+n*d(其中d是指针所指向变量的数据类型所占内存字节数),即指针移动了n个元素。⑵指针与指针的加运算毫无意义

8、,所以指针与指针没有加运算。⑶指针与指针的减运算要求相减的两个指针属于同一类型,其结果是整数,表示两个指针之

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

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

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