C语言程序设计 教学课件 作者 刘国成 张丹彤第八章 指针.ppt

C语言程序设计 教学课件 作者 刘国成 张丹彤第八章 指针.ppt

ID:50298014

大小:1.44 MB

页数:33页

时间:2020-03-07

C语言程序设计 教学课件 作者 刘国成 张丹彤第八章 指针.ppt_第1页
C语言程序设计 教学课件 作者 刘国成 张丹彤第八章 指针.ppt_第2页
C语言程序设计 教学课件 作者 刘国成 张丹彤第八章 指针.ppt_第3页
C语言程序设计 教学课件 作者 刘国成 张丹彤第八章 指针.ppt_第4页
C语言程序设计 教学课件 作者 刘国成 张丹彤第八章 指针.ppt_第5页
资源描述:

《C语言程序设计 教学课件 作者 刘国成 张丹彤第八章 指针.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C语言程序设计教程8.1变量的地址与指针计算机的内存是以字节为单位的一片连续的存储空间,每一个字节都有一个编号,这个编号就称为内存地址。内存的存储空间是连续的,内存的地址号也是连续的。一个变量实质上代表了“内存中的某个存储单元”。每个变量所占的存储单元都有确定的地址。具体的地址是在编译时分配的。若有定义inta,b;floatx则系统为变量a,b,x分配内存空间情况如图所示。第8章指针8.2指针变量的定义和指针变量的基本类型对指针变量的定义包括三个内容:(1)指针类型说明,即定义变量为一个指针变量;(2)

2、指针变量名;(3)变量值(指针)所指向的变量的数据类型。其一般形式为:类型说明符*变量名;第8章指针8.3指针变量的赋值指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值。未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机。指针变量的赋值只能赋予地址,决不能赋予任何其他数据,否则将引起错误。在C语言中,变量的地址是由编译系统分配的,对用户完全透明,用户不知道变量的具体地址。两个有关的运算符:①&:取地址运算符。②*:指针运算符(或称“间接访问”运算符)。C语言中提供了地址运算符&来

3、表示变量的地址。其一般形式为:&变量名;第8章指针如&a表示变量a的地址,&b表示变量b的地址。变量本身必须预先说明。设有指向整型变量的指针变量p,如要把整型变量a的地址赋予p可以有以下两种方式:(1)指针变量初始化的方法inta;int*p=&a;(2)赋值语句的方法inta;int*p;p=&a;第8章指针8.4指针变量的操作指针变量可出现在表达式中,设intx,y,*px=&x;指针变量px指向整数x,则*px可出现在x能出现的任何地方。例如:y=*px+5;/*表示把x的内容加5并赋给y*/注意:

4、当指针运算符与自加、自减运算符相邻出现在表达式时需按右结合方法确定优先级别。第8章指针8.5指针变量作为函数参数函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。下面通过例子来说明。第8章指针例8.5:#includevoidmain(){voidmov(int*,int*);intx,y;mov(&x,&y);printf("%d,%d",x,y);}voidmov(int*px,int*py){*px=10;*py=20;}运行情况:10,208.6指向一维数组的指

5、针变量8.6.1一维数组指针的概念变量有地址,数组包含若干元素,每个数组元素都在内存中占用存储单元,且是连续的存储单元,也有相应的地址。指针变量可以指向变量,自然也可以指向数组和数组元素。数组元素的指针就是数组元素的地址。。下面通过例子来说明。第8章指针8.6.2数组元素地址作实参当调用函数时,数组元素可以作为实参传给形参,和普通变量一样,对应的形参必须是类型相同的变量。数组元素的值可以传送给该变量,在函数中只能对该变量进行操作,而不能直接引用对应的数组元素。当数组元素的地址作为实参时,因为是地址值,所以

6、对应的形参也应当是基类型相同的指针变量。第8章指针8.6.3数组名作函数参数指针可以作参数,数组名表示数组的首地址,所以数组名可以作函数参数。归纳起来,如果有一个实参数组,要在函数中改变此数组的元素的值,实参与形参的对应关系有以下4种情况:①形参和实参都用数组名;②实参用数组名,形参用指针变量;③实参形参都用指针变量;④实参为指针变量,形参为数组名。应注意,如果用指针变量作实参,必须先使指针变量有确定值,指向一个已定义的数组。第8章指针8.7指向二维数组的指针变量8.7.1二维数组地址的概念在C语言中定义

7、的二维数组实际上是一个一维数组,这个一维数组的每个成员又是一个一维数组。第8章指针8.7.2通过建立一个行指针来引用二维数组元素若有以下定义:inta[3][4],(*ptr)[4];在这里,说明符(*ptr)[4]中,由于一对圆括号的存在,所以*号首先与ptr结合,说明ptr是一个指针变量,然后再与说明符[4]结合,说明指针变量ptr的基类型是一个包含有四个int元素的数组。在这里,ptr的基类型与a的相同,因此ptr=a;是合法的赋值语句。第8章指针8.7.3二维数组名作为实参时,实参和形参之间的数据

8、传递当二维数组名作为实参时,对应的形参必须是一个行指针变量。在fun函数的首部可以是以下三种形式之一:(1)fun(double(*a)[N])(2)fun(doublea[][N])(3)fun(doublea[M][N])第8章指针8.8字符串与字符串指针变量C语言本身没有设置一种定义字符串的变量,字符串的存储完全依赖于字符数组,但字符数组又不等于字符串变量。第8章指针用字符数组和字符指针变量都能实现字符串的存储和运算,但

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

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

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