欢迎来到天天文库
浏览记录
ID:50020391
大小:2.66 MB
页数:91页
时间:2020-03-07
《C语言程序设计教程 教学课件 作者 李丽芬 孙丽云 主编C语言第8章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《C语言程序设计》第8章指针2本章主要内容变量的地址和指针指针变量的定义指针运算指针与数组指针与函数指针数组和指向指针的指针3计算机内的存储部件,活动中的所有指令和数据都保存在内存内速度快,但是掉电即失可以随机访问只要指名要访问的内存单元的地址,就可以立即访问到该单元地址是一个无符号整数(通常用16进制数),其字长与主机相同内存中的每个字节都有唯一的一个地址内存地址4指针铁杆C/C++程序员最挚爱的武器:指针指针造就了C/C++的高效和强大很多不可能的任务由指针完成但如果指针使用不当会产生致命的错误,使程
2、序无法运行。因此,初学者要全面掌握指针的有关内容。58.1变量的地址和指针定义一个变量时:首先要定义变量的数据类型:数据类型决定了一个变量在内存中所占用的存储空间的大小。其次要定义变量名。6地址和指针变量与地址程序中:inti,j,k;内存中每个字节有一个编号-----地址…...…...2000…2004内存02005i编译或函数调用时为其分配内存单元变量是对程序中数据存储空间的抽象7直接访问与间接访问直接访问:通过变量名来访问一个变量的值间接访问:通过存放变量地址的变量去访问变量例i=10;-----
3、直接访问指针变量…...…...20003000…整型变量i10变量i_pointer…2004…200010例*p=20;-----间接访问20…8.2指针变量的定义定义一个指针变量需要解决两个问题:说明指针变量的名字说明指针变量指向的数据类型,即指针变量指向的变量的数据类型。8指针变量说明的形式为:类型说明符*变量名1,*变量名2…;8.2指针变量的定义例如:int*p;floatx,*q;98.2指针变量的定义10说明:变量名前的“*”在定义时不能省略,它是说明其后变量是指针类型变量的标志。其它类型
4、的变量允许和指针变量在同一个语句中定义,例如:intm,n,*p,*q;指针定义中的“数据类型”是指针指向的目标变量的数据类型,而不是指针变量的数据类型。指针变量的数据类型由“*”说明为指针类型。8.3指针运算8.3.1取地址运算符8.3.2指针运算符8.3.3赋值运算8.3.4空指针与void指针1112&与*运算符含义含义:取变量的地址单目运算符结合性:自右向左含义:取指针所指向变量的内容单目运算符结合性:自右向左两者关系:互为逆运算理解…...…...20003000…整型变量i10变量i_poin
5、ter…2004…2000指针变量p-----指针变量,它的内容是地址量*p----指针的目标变量,它的内容是数据&p---指针变量占用内存的地址200010p*p&iip&ii*pp=&ii=*p…...8.3.2指针运算符例如:intx=10,*p,y;p=&x;y=*p;注意:此例中第1个语句和第3个语句都出现了“*p”,但意义是不同的。这是因为“*”在类型说明和在取值运算中的含义是不同的。在第一个语句中的“*p”表示将变量p说明为指针变量,用“*”以区别于一般变量,这里是说明指针变量p。而在第3个
6、语句中的“*p”是使用指针变量p,此时“*”是运算符,表示取指针所指向存储单元的内容,即对p进行间接存取运算,取变量x的值。138.3.3赋值运算14指针变量的初始化指针变量的初始化,就是在定义指针变量的同时为其赋初值。由于指针变量是指针类型,所赋初值应是一个地址值。其一般格式如下:数据类型*指针变量名1=地址1,*指针变量名2=地址2…;其中的地址形式有多种,如:&变量名、数组名、其它的指针变量等。8.3.3赋值运算15“&”运算符是取地址运算符,“&变量名”也可以直接理解为变量的地址。例如:inti;
7、int*p=&i;这两个语句分别定义了整型变量i和指向整型变量i的指针变量p,并且将变量i的地址作为p的初值。chars[20];char*str=s;这两个语句分别定义了字符型数组变量s和指向字符型变量的指针变量str,并且将字符数组s的首地址作为str的初值。8.3.3赋值运算说明:(1)不能用尚未定义的变量给指针变量赋初值,例如下面的用法是错误的:float*q=&x;floatx;(2)当用一个变量地址为指针变量赋初值时,该变量的数据类型必须与指针变量指向的数据类型一致。例如下面的用法是错误的,因
8、为m和p指向的数据类型不匹配。floatm;int*p=&m;168.3.3赋值运算(3)除0之外,一般不把其他整数作为初值赋给指针变量。程序运行期间,变量的地址是由计算机分配的,当用一个整数为一个指针变量赋初值后,可能会造成难以预料的后果。当用0对指针赋初值时,系统会将该指针变量初始化为一个空指针,不指向任何对象。17188.3.3赋值运算使用赋值语句赋值一般格式如下:指针变量=地址;例如:intm=100,*p,*q;p=
此文档下载收益归作者所有