第八章 指针ppt课件.ppt

第八章 指针ppt课件.ppt

ID:58680639

大小:535.50 KB

页数:74页

时间:2020-10-05

第八章 指针ppt课件.ppt_第1页
第八章 指针ppt课件.ppt_第2页
第八章 指针ppt课件.ppt_第3页
第八章 指针ppt课件.ppt_第4页
第八章 指针ppt课件.ppt_第5页
资源描述:

《第八章 指针ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章指针指针是C语言中的一个重要概念,是C语言的精华、灵魂。1.内存单元地址程序中定义了变量后,在编译时系统就给这个变量分配内存单元。内存中每一个内存单元都有一个编号,这就是“地址”。内存单元地址就是编译后系统分配给变量的内存空间位置。例如:inti,j,k;8.1地址和指针的概念内存用户数据区┇变量k变量j变量i┇200020022004其中2000为i的地址2002为j的地址2004为k的地址⑶数据在内存中的存取方式:直接访问方式和间接访问方式。直接访问方式:按变量地址存取变量值。间接访问方式

2、:把一个变量的地址放在另一个变量中。⑵内存单元的内容——内存单元中存放的数值。例如:i=3;j=6;在2000单元中存放数值3,3即为内容。在2002单元中存放数值6,6即为内容。变量i变量j┇63┇20002002例:printf("%d",i);其执行是这样的:根据变量名与地址的对应关系,找到变量i的地址2000,然后从由2000开始的两个字节中取出数据(即变量的值3),把它输出。这种按变量地址存取变量值的方式称为“直接访问”方式。例如,我们定义一个变量i_pointer,用来存放整型变量i的地

3、址:i_pointer=&i;/*把变量i的地址赋给变量i_pointer*/这时i_pointer的值就是变量i所占用的内存单元的起始地址(2000)。如何存取变量i的值?变量i变量j┇┇200063┇20002002变量i_pointer3010间接访问方式:通过存储在某一个内存单元中的地址去存取该地址所指向的内存单元中的变量值。要存取变量i的值,先要找到存放i的地址的变量(i_pointer),从中取出i的地址(2000),然后到2000、2001字节中取出i的值(3)。表示将数值3送到变量中

4、,有两种方法:①将3送到变量i所标志的单元中。②将3送到变量i_pointer所“指向”的单元中。所谓“指向”就是通过地址来体现的。(如右图所示)由于通过地址可以找到所需的变量单元,因此可以说,地址“指向”该内存单元。在C语言中,将地址形象化地称为“指针”。一个变量的地址称为该变量的“指针”。例如地址2000是变量i的指针。如果有一个变量,专门用来存放另一个变量的地址(即指针),则它称为“指针变量”。如前面所说的i_pointer变量称为指针变量。指针变量的值是指针(地址)。注意:(1)“指针”和“

5、指针变量”这两个不同的概念。(2)通过指针变量如何访问变量i的值?(间接访问)2000i32000i32000i_pointer变量的指针就是变量的地址。存放变量地址的变量是指针变量,用来指向另一个变量。指针变量和它所指向的变量之间,用“*”表示“指向”。例如i_pointer代表指针变量,*i_pointer是i_pointer所指向的变量。8.2变量的指针和指向变量的指针变量*i_pointer200032000i_pointeri可以看到,*i_pointer也代表一个变量,它和变量i是同一回

6、事。下面两个语句作用相同:①i=3;②*i_pointer=3;第②个语句的含义是将3赋给指针变量i_pointer所指向的变量。8.2.1定义一个指针变量指针变量是专门用来存放地址的,因此必须定义为“指针类型”。指针变量定义的一般形式:基类型*指针变量名指针变量的基类型用来指定该指针变量可以指向的变量的类型。例如:int*pointer_1,*pointer_2;(指向整型变量的指针变量)float*pointer_3;(指向实型变量的指针变量)char*pointer_4;(指向字符型变量的指针

7、变量)注意:1.指针变量前面的“*”表示该变量是指针变量。指针变量名是pointer_1、pointer_2,而不是*pointer_1、*pointer_2.2.在定义指针变量时必须指定基类型。不同类型的数据在内存中所占的字节数是不同的。指针变量的类型说明是为了告诉系统按变量中的地址从内存选取几个字节的数据进行操作,便于指针的移动和指针的运算操作。3.一个指针变量只能指向同一类型的变量,即存放同一类型变量的地址。怎样使一个指针变量指向另一个变量呢?可以使用赋值语句。例如:floatx;charch

8、;float*pointer_3;char*pointer_4;pointer_3=&x;pointer_4=&ch;例:intk,i=5;int*pointer;pointer=&i;k=*pointer;printf("%d",k);printf("%d",*pointer);2000(地址)pointer20005(数据)*pointeri2000输出变量i的值5k的值为58.2.2指针变量的引用指针变量中只能存放地址(指针),不能将一个整型量或任何其它非地址类

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

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

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