c语言程序设计教学资料第9章指针_第1页
c语言程序设计教学资料第9章指针_第2页
c语言程序设计教学资料第9章指针_第3页
c语言程序设计教学资料第9章指针_第4页
c语言程序设计教学资料第9章指针_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1、变量的内存地址变量的内存地址指针变量的定义和初始化指针变量的定义和初始化间接寻址运算符间接寻址运算符函数指针函数指针内存地址内存地址p 指令和数据都保存在计算机的内存中。指令和数据都保存在计算机的内存中。p 内存区的每一个字节有唯一的一个编号,这内存区的每一个字节有唯一的一个编号,这就是就是“地址地址” 。地址是一个无符号整数,其。地址是一个无符号整数,其字长一般与主机相同。字长一般与主机相同。p 如果在程序中定义了一个变量,在对程序进如果在程序中定义了一个变量,在对程序进行编译时,系统就会给这个变量分配内存单行编译时,系统就会给这个变量分配内存单元。元。 只要指明要访问的内存单元的地址,就只

2、要指明要访问的内存单元的地址,就可以立即访问到该单元。可以立即访问到该单元。指针变量的定义指针变量的定义指针概念:指针概念:p存放变量地址需要一种特殊的数据类型,即存放变量地址需要一种特殊的数据类型,即“指指针针”。p 一个变量的指针就是该变量的地址(指针就是地址)一个变量的指针就是该变量的地址(指针就是地址)p 具有指针类型的变量,成为具有指针类型的变量,成为指针变量,指针变量,它是专门用它是专门用于存储变量地址值的变量。于存储变量地址值的变量。p 如果有一个变量专门用来存放另一变量的地址(即如果有一个变量专门用来存放另一变量的地址(即指针),则它称为指针),则它称为“指针变量指针变量”一个

3、变量的地址称为该变一个变量的地址称为该变量的量的“指针指针”。例如,地址例如,地址2000是变量是变量的指针。的指针。如果有一个变量专门用来如果有一个变量专门用来存放另一变量的地址(即存放另一变量的地址(即指针),则它称为指针),则它称为“指针指针变量变量”。上述的上述的i_pointer就是一就是一个指针变量。个指针变量。变量名变量名变量值变量值变量的变量的地址地址说明:说明:p 定义形式:定义形式:数据类型数据类型 *指针变量名指针变量名 其中,数据类型表示指针变量要指向的变量的数据其中,数据类型表示指针变量要指向的变量的数据类型。类型。(2) 在定义指针变量时必须指定基类型。在定义指针变

4、量时必须指定基类型。 例:例:int *p; float a; p=&a; 指针变量的初始化指针变量的初始化(1)(2)注意注意:n 指针变量中只能存放地址(指针),不要将一个整指针变量中只能存放地址(指针),不要将一个整数(或任何其他非地址类型的数据)赋给一个指针变数(或任何其他非地址类型的数据)赋给一个指针变量。量。 n 指针只有在真正指向了一块有意义的内存后,才能指针只有在真正指向了一块有意义的内存后,才能访问它的内容。未初始化的指针引起非法访问内存访问它的内容。未初始化的指针引起非法访问内存#include void main ( ) int a=100, b=10; int *pa,

5、 *pb; pa=&a; /把变量把变量a的地址赋给的地址赋给p1 pb =&b; /把变量把变量b的地址赋给的地址赋给p2 printf(%d,%d,);); printf(%d,%d,*pa, *pb););papb10010寻址方式寻址方式任何变量在存在期间总有确定存储位置,有固任何变量在存在期间总有确定存储位置,有固定的地址定的地址p 如何读写内存中的数据?如何读写内存中的数据? 通过变量的地址访问变量所在的存储单元。通过变量的地址访问变量所在的存储单元。p 两种寻址方式两种寻址方式 直接寻址直接寻址 间接寻址间接寻址 直接寻址直接寻址p 按变量名或地址存取变量值的方式称为按变量名或地

6、址存取变量值的方式称为“直直接访接访 问问”方式方式p &取地址运算符取地址运算符p%p格式字符,表示输出变量的地址值格式字符,表示输出变量的地址值间接寻址间接寻址p 通过指针变量间接存取它所指向的变量的访通过指针变量间接存取它所指向的变量的访问方式称为问方式称为“间接访问间接访问”方式方式l“”和和“*”两个运算符的优先级别相同,但按自右而左方向两个运算符的优先级别相同,但按自右而左方向结合。结合。p 取地址运算符取地址运算符&使用在变量名前取变量地址,是对应类型的指针值,可赋值使用在变量名前取变量地址,是对应类型的指针值,可赋值给类型合适的指针。给类型合适的指针。例:例:int a=5,

7、*p; p=&a;我是真的,我是真的,猜对了吗猜对了吗p 间接运算符间接运算符*用来取指针指向地址的内容用来取指针指向地址的内容*p=x=5“”和和“*”两个运算符的优先级别相同,但按自右而左方向结两个运算符的优先级别相同,但按自右而左方向结合。合。指针运算指针运算abcd253p33指针与函数指针与函数按值调用:按值调用:p 指针变量作函数参数指针变量作函数参数 按地址调用(模拟按引用调用)按地址调用(模拟按引用调用)函数指针函数指针p 如果在程序中定义了一个函数,在编译时,编译如果在程序中定义了一个函数,在编译时,编译系统为函数代码分配一段存储空间,这段存储空间系统为函数代码分配一段存储空

8、间,这段存储空间的起始地址,称为这个的起始地址,称为这个函数的指针函数的指针。p 可以定义一个指向函数的指针变量,用来存放某可以定义一个指向函数的指针变量,用来存放某一函数的起始地址,这就意味着此指针变量指向该一函数的起始地址,这就意味着此指针变量指向该函数。函数。 注意:注意:int (*add)(int, int);与与int *add(int, int);是不同是不同的的后者函数有两个整型形参,而函数的返回值时一个后者函数有两个整型形参,而函数的返回值时一个指针类型的数据。指针类型的数据。函数返回指针函数返回指针有关指针的小结有关指针的小结 1.首先要准确地弄清楚指针的含义。指针就是地址,凡是出现“指针”的地方,都可以用“地址”代替,例如,变量的指针就是变量的地址,指针变量就是地址变量 要区别指针和指针变量。指针就是地址

温馨提示

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

评论

0/150

提交评论