《c语言程序设计教学资料》第9章-指针.ppt

上传人:小飞机 文档编号:5896115 上传时间:2023-08-31 格式:PPT 页数:48 大小:4.74MB
返回 下载 相关 举报
《c语言程序设计教学资料》第9章-指针.ppt_第1页
第1页 / 共48页
《c语言程序设计教学资料》第9章-指针.ppt_第2页
第2页 / 共48页
《c语言程序设计教学资料》第9章-指针.ppt_第3页
第3页 / 共48页
《c语言程序设计教学资料》第9章-指针.ppt_第4页
第4页 / 共48页
《c语言程序设计教学资料》第9章-指针.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《《c语言程序设计教学资料》第9章-指针.ppt》由会员分享,可在线阅读,更多相关《《c语言程序设计教学资料》第9章-指针.ppt(48页珍藏版)》请在三一办公上搜索。

1、第9章 指针,主要内容,变量的内存地址指针变量的定义和初始化间接寻址运算符函数指针,内存地址,指令和数据都保存在计算机的内存中。内存区的每一个字节有唯一的一个编号,这就是“地址”。地址是一个无符号整数,其字长一般与主机相同。如果在程序中定义了一个变量,在对程序进行编译时,系统就会给这个变量分配内存单元。只要指明要访问的内存单元的地址,就可以立即访问到该单元。,指针变量的定义,指针概念:存放变量地址需要一种特殊的数据类型,即“指针”。一个变量的指针就是该变量的地址(指针就是地址)具有指针类型的变量,成为指针变量,它是专门用于存储变量地址值的变量。如果有一个变量专门用来存放另一变量的地址(即指针)

2、,则它称为“指针变量”,一个变量的地址称为该变量的“指针”。例如,地址2000是变量的指针。如果有一个变量专门用来存放另一变量的地址(即指针),则它称为“指针变量”。上述的i_pointer就是一个指针变量。,变量名,变量值,变量的地址,说明:,定义形式:数据类型*指针变量名 其中,数据类型表示指针变量要指向的变量的数据类型。,(2)在定义指针变量时必须指定基类型。例:int*p;float a;p=,指针变量的初始化,注意:指针变量中只能存放地址(指针),不要将一个整数(或任何其他非地址类型的数据)赋给一个指针变量。,指针只有在真正指向了一块有意义的内存后,才能访问它的内容。未初始化的指针引

3、起非法访问内存,#include void main()int a=100,b=10;int*pa,*pb;pa=&a;/把变量a的地址赋给p1 pb=&b;/把变量b的地址赋给p2 printf(%d,%d,);printf(%d,%d,*pa,*pb);,寻址方式,任何变量在存在期间总有确定存储位置,有固定的地址 如何读写内存中的数据?通过变量的地址访问变量所在的存储单元。两种寻址方式 直接寻址 间接寻址,直接寻址,按变量名或地址存取变量值的方式称为“直接访 问”方式,&取地址运算符%p格式字符,表示输出变量的地址值,间接寻址,通过指针变量间接存取它所指向的变量的访问方式称为“间接访问”方

4、式,“”和“*”两个运算符的优先级别相同,但按自右而左方向结合。,取地址运算符&,使用在变量名前取变量地址,是对应类型的指针值,可赋值给类型合适的指针。,例:int a=5,*p;p=,我是真的,猜对了吗,间接运算符*,用来取指针指向地址的内容,*p=x=5,“”和“*”两个运算符的优先级别相同,但按自右而左方向结合。,指针运算,2,5,3,p,3,3,指针与函数,按值调用:,指针变量作函数参数 按地址调用(模拟按引用调用),函数指针,如果在程序中定义了一个函数,在编译时,编译系统为函数代码分配一段存储空间,这段存储空间的起始地址,称为这个函数的指针。可以定义一个指向函数的指针变量,用来存放某

5、一函数的起始地址,这就意味着此指针变量指向该函数。,注意:int(*add)(int,int);与int*add(int,int);是不同的后者函数有两个整型形参,而函数的返回值时一个指针类型的数据。,函数返回指针,有关指针的小结,1.首先要准确地弄清楚指针的含义。指针就是地址,凡是出现“指针”的地方,都可以用“地址”代替,例如,变量的指针就是变量的地址,指针变量就是地址变量 要区别指针和指针变量。指针就是地址本身,而指针变量是用来存放地址的变量。2.什么叫“指向”?地址就意味着指向,因为通过地址能找到具有该地址的对象。对于指针变量来说,把谁的地址存放在指针变量中,就说此指针变量指向谁。但应注意:只有与指针变量的基类型相同的数据的地址才能存放在相应的指针变量中。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号