指针PPT资料.pptx

上传人:wj 文档编号:8325536 上传时间:2023-05-11 格式:PPTX 页数:20 大小:135.46KB
下载 相关 举报
指针PPT资料.pptx_第1页
第1页 / 共20页
指针PPT资料.pptx_第2页
第2页 / 共20页
指针PPT资料.pptx_第3页
第3页 / 共20页
指针PPT资料.pptx_第4页
第4页 / 共20页
指针PPT资料.pptx_第5页
第5页 / 共20页
指针PPT资料.pptx_第6页
第6页 / 共20页
指针PPT资料.pptx_第7页
第7页 / 共20页
指针PPT资料.pptx_第8页
第8页 / 共20页
指针PPT资料.pptx_第9页
第9页 / 共20页
指针PPT资料.pptx_第10页
第10页 / 共20页
指针PPT资料.pptx_第11页
第11页 / 共20页
指针PPT资料.pptx_第12页
第12页 / 共20页
指针PPT资料.pptx_第13页
第13页 / 共20页
指针PPT资料.pptx_第14页
第14页 / 共20页
指针PPT资料.pptx_第15页
第15页 / 共20页
指针PPT资料.pptx_第16页
第16页 / 共20页
指针PPT资料.pptx_第17页
第17页 / 共20页
指针PPT资料.pptx_第18页
第18页 / 共20页
指针PPT资料.pptx_第19页
第19页 / 共20页
指针PPT资料.pptx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

指针PPT资料.pptx

《指针PPT资料.pptx》由会员分享,可在线阅读,更多相关《指针PPT资料.pptx(20页珍藏版)》请在冰点文库上搜索。

指针PPT资料.pptx

这时候这个唯一的地址就和这个变量的名子绑在了一起),而这个空间名子就叫x,那么大家想一想,找到了这个地址是不是也就找到了这个变量。

那么你在做X=20的时候,对于C+工具来说,首先要找到这个变量的地址(就好比图书管理员先要找到三楼301号屋子一样)在把20这个值放到这个地址里去,那么这时候X的值就变成了20这个值。

而对于程序员来说,你只要记住变量的名子是X就可以了,别的工作是由C+工具(管理员来完成的)。

1、程序执行中所用的数据都存于内存中,任何数据都有一定的存储位置,占据一定数量的存储单元.内存单元按顺序排列,每个单元有一个称为内存地址的编号.如同通过通信地址可以唯一确定居住区的每个住户一样,内存中的数据也可以通过内存单元的地址进行确定,内存单元的地址用一个十六进制数表示,如fff3,ff10等等.对程序员而言,记住变量名要比记住用十六进制表示的内存单元地址更加简便,所以我们要给程序变量起名,然后通过变量名来引用内存单元的数据.(举图书馆的例子)2、直接存取:

我们在程序中只需指出变量名,无需知道每个变量在内存中的具体地址,每个变量与具体地址的联系由c编译系统来完成.程序中我们对变量进行存取操作,实际上也就是对某个地址的存储单元进行操作.这种直接按变量的地址存取变量值的方式称为:

直接存取.,i的值,J的值,K的值,2000,2004,2008,如图:

假设程序已定义了三个整型变量i,j,k,编译时系统分配2000至2003四个字节给变量i,2004至2007四个字节给变量j,2008到200b四个字节给变量k。

1、Printf(“%d”,i);

根据变量名与地址的对应关系,找到变量i的地址2000,然后,从由2000开始的4个字节中取出数据(即变量的值3)2、输入时如果用scanf(“%d”,则从2000-2003字节取出i的值3,再从2004-2007字节取出j的值6,将它们相加后再将其和9送到k所占用2008-200b字节单元中。

指针简介2-1,内存,10,intx,ED53,地址,变量,数据,ED53,int*ptr_x,指针,如果:

ptr_x=&

x,则指针ptr_x指向变量x,指针也是一个变量,只不过该变量中存储的是另一个对象的内存地址;

如果一个变量存储另一个对象的地址,则称该变量指向这个对象;

由于指针值是数据,指针变量可以赋值,所以一个指针的指向在程序执行中可以改变。

指针p在执行中某时刻指向变量x,在另一时刻也可以指向变量y。

指针简介2-2,声明并初始化指针变量,数据类型*指针名;

int*ptrnum;

char*ptralpha;

float*rate_ptr;

double*p,*q;

值为NULL的指针称为空指针,这意味着,指针并不指向任何地址。

在头文件stdio.h中,NULL定义为常量。

请牢记变量中只能存放地址(指针),不要将一个变量(或任何其他非地址类型的数据)赋给一个指针变量ptrnum=100;

ptrnum=NULL;

注意:

指针变量的名子是ptrnum,而不是*ptrnum,其中int*ptrnum中的*代表该变量的类型为指针型变量。

举例:

职业民族名子职业民族名子医生汉张三医生张三/民族如果不写一般来说教师汉李四教师李四都会认为是汉族。

学生苗赵五学生苗赵五那么当说介绍赵五的时候应说学生赵五是苗族的,而不能说学生苗赵五。

inta;

/可以说a是整型变量intb;

/可以说b是整型变量floatc;

/可以说c是单精度变量int*aa;

/但你不能说*aa是指针变量,因为在这里的*代表的是aa是特殊变量,或说aa是指针变量。

与指针相关的运算符2-1,intnum,*ptrnum;

ptrnum=,取地址符,指针,FF7C,&

与指针相关的运算符2-2,intnum,*ptrnum;

ptrnum=,间接运算符,15,*,例如:

intk=10;

这是定义一个变量并给这个变量赋一个值,那么在做例如:

k=20;

这时候k在=的左侧,大家想到的是变量的名子,而不是值10,而当p=k+10的时候,k在=的右侧,大家想到的是k的值10,而不是想到的是k这个变量的名子。

(1)int*p,k=0;

p=/取指针变量p所指存储单元中的值,加1后再放入p所指的存储单元中,即使得变量k中的值增1而为101。

显然,当*p出现在赋值号左边时,代表的时指针所指的存储单元(即变量名),当*p出现在赋值号右边时,代表的是指针所指的存储单元的内容(即变量的值)。

int*ptrnmu1,*ptrnmu2;

inta=10,b=20;

ptrnmu2=和b=*ptrnmu1的作用是一样的。

*p=*p+1;

以上语句可写成:

*p+=1;

或+*p或(*p)+注意:

在表达式+*p中,+和*两个运算符的优先级别相同,但按自右至左的方向结合,因此,+*p相当于+(*p),而在表达式(*p)+中一对括号不可少,(*p)+表示先取p所指存储单元中的值,然后增1个为表达式的值。

不可以写成*p+,否则将先计算*p作为表达式的值(如此时为100),然后使指针变量p本身增1,所以*p+并不使p所指存储单元中的值增1而是移动了指针。

指针的特点,指针变量的命名规则和其他变量的命名规则一样指针不能与现有变量同名指针可存放C语言中的任何基本数据类型、数组和其他所有高级数据结构的地址若指针已声明为指向某种类型数据的地址,则它不能用于存储其他类型数据的地址应为指针指定一个地址后,才能在语句中使用指针,指针使用示例1,#includevoidmain()intvar=10;

int*ptr_var;

ptr_var=,10,12ff7c,var的值是:

10,var的内存地址是:

12ff7c,12ff7c,12ff78,指针ptr_var的地址是:

12ff78,var的值是:

10,var的地址是:

12ff7c,指针使用示例2,voidmain()intnum1=50,num2=100;

int*ptr1,*ptr2;

ptr1=,50,12ff7c,12ff7c,100,12ff78,12ff78,50,voidmain()inta=0;

/初始化a值为0func(/让参数a等于10,引用调用,FFE0,引用调用,a=FFE0,将会输出什么,#includevoidincrement(int*,int*);

voidmain()intnum1,num2;

printf(n请输入两个数:

);

scanf(%d%d,引用调用示例,请输入两个数:

4567,递增前的值是45和67,_,递增后的值是46和68,45,67,子函数中的值是46和68,46,FF23,FF05,68,FF23,FF05,引用调用:

调用函数的实参使用地址值,被调用函数的形参要求是指针,并要求形参指针的类型要与实参地址中存放的变量类型相同。

在引用调用时,调用函数实参的地址值传递给对应形参的指针,让形参指针指向实参地址中的存放的变量。

因此,在引用调用中不是将实参拷贝一个副本给形参,而是把实参的地址给形参,即让形参直接指向实参,于是便可以在被调用函数中通过改变指针所指向的变量的值来影响实参的值,这是引用调用的一个特点。

引用调用的优点是:

调用时只传递变量的地址值,而不拷贝副本,这在时间和空间的开销不都将减少,因此可提高运行效率,特别是对复杂类型的变量,只传地址会提高效率,这是传址的突出优点。

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

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2