C_语言PPT谭浩强教材配套版第10章课件.ppt

C_语言PPT谭浩强教材配套版第10章课件.ppt

ID:57056691

大小:1.46 MB

页数:265页

时间:2020-07-30

C_语言PPT谭浩强教材配套版第10章课件.ppt_第1页
C_语言PPT谭浩强教材配套版第10章课件.ppt_第2页
C_语言PPT谭浩强教材配套版第10章课件.ppt_第3页
C_语言PPT谭浩强教材配套版第10章课件.ppt_第4页
C_语言PPT谭浩强教材配套版第10章课件.ppt_第5页
资源描述:

《C_语言PPT谭浩强教材配套版第10章课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第10章指针10.1 地址和指针的概念10.2 变量的指针和指向变量的指针变量10.3 数组的指针和指向数组的指针变量10.4 字符串的指针和指向字符串的指针变量10.5 函数的指针和指向函数的指针变量10.6 返回指针值的函数10.7 指针数组和指向指针的指针10.8 有关指针的数据类型和指针运算的小结习题指针是C语言中的一个重要的概念,也是C语言的一个重要特色。正确而灵活地运用它,可以有效地表示复杂的数据结构;能动态分配内存;能方便地使用字符串;有效而方便地使用数组;在调用函数时能得到多于1个的值;能直接处理内存地址等,这对设计系统软件是很必要的。掌握指针的应用,可以使

2、程序简洁、紧凑、高效。每一个学习和使用C语言的人,都应当深入地学习和掌握指针。可以说,不掌握指针就是没有掌握C的精华。指针的概念比较复杂,使用也比较灵活,因此初学时常会出错,务请在学习本章内容时十分小心,多思考、多比较、多上机,在实践中掌握它。我们在叙述时也力图用通俗易懂的方法使读者易于理解。10.1地址和指针的概念为了说清楚什么是指针,必须弄清楚数据在内存中是如何存储的,又是如何读取的。如果在程序中定义了一个变量,在编译时就给这个变量分配内存单元。系统根据程序中定义的变量类型,分配一定长度的空间。例如,一般微机使用的C系统为整图10.1型变量分配2个字节,对实型变量分配4

3、个字节,对字符型变量分配1个字节。内存区的每一个字节有一个编号,这就是“地址”,它相当于旅馆中的房间号。在地址所标志的内存单元中存放数据,这相当于旅馆中各个房间中居住旅客一样。请务必弄清楚一个内存单元的地址与内存单元的内容这两个概念的区别,如图10.1所示。假设程序已定义了3个整型变量i、j、k,编译时系统分配2000和2001两个字节给变量i,2002,2003字节给j,2004,2005给k。在程序中一般是通过变量名来对内存单元进行存取操作的。其实程序经过编译以后己经将变量名转换为变量的地址,对变量值的存取都是通过地址进行的。例如,printf(“%D”,i)的执行是这

4、样的:根据变量名与地址的对应关系(这个对应关系是在编译时确定的),找到变量i的地址2000,然后从由2000开始的两个字节中取出数据(即变量的值3),把它输出。输入时如果用scanf("%D",&i),在执行时,就把从键盘输入的值送到地址为2000开始的整型存储单元中。如果有语句“k=i+j”,则从2000、2001字节取出i的值(3),再从2002、2003字节取出j的值(6),将它们相加后再将其和(9)送到k所占用的2004、2005字节单元中。这种按变量地址存取变量值的方式称为“直接访问”方式。还可以采用另一种称之为“间接访问”的方式,将变量i的地址存放在另一个变量中

5、。按C语言的规定,可以在程序中定义整型变量、实型变量、字符变量等,也可以定义这样一种特殊的变量,它是存放地址的。假设我们定义了一个变量i-pointer,用来存放整型变量的地址,它被分配为3010、3011字节。可以通过下面语句将i的刂?2000)存放到i-pointer中。i-pointer=&i;这时,i-pointer的值就是2000,即变量i所占用单元的起始地址。要存取变量i的值,也可以采用间接方式:先找到存放“i的地址”的变量,从中取出i的地址(2000),然后到2000、2001字节取出i的值(3)。打个比方,为了开一个A抽屉,有两种办法,一种是将A钥匙带在身上

6、,需要时直接找出该钥匙打开抽屉,取出所需的东西。另一种办法是:为安全起见,将该A钥匙放到另一抽屉B中锁起来。如果需要打开A抽屉,就需要先找出B钥匙,打开B抽屉,取出A钥匙,再打开A抽屉,取出A抽屉中之物,这就是“间接访问”。图10.2是直接访问和间接访问的示意图。图10.2为了表示将数值3送到变量中,可以有两种表达方法:(1)将3送到变量i所标志的单元中。见图10.2上。(2)将3送到变量i-pointer所“指向”的单元(即i所标志的单元)中。见图10.2下。所谓“指向”就是通过地址来体现的。i-pointer中的值为2000,它是变量i的地址,这样就在i-pointer

7、和变量i之间建立起一种联系,即通过i-pointer能知道i的地址,从而找到变量i的内存单元。图10.2中以箭头表示这种“指向”关系。由于通过地址能找到所需的变量单元,我们可以说,地址“指向”该变量单元(如同说,房间号“指向“某一房间一样)。因此在C语言中,将地址形象化地称为“指针”。意思是通过它能找到以它为地址的内存单元(例如根据地址2000就能找到变量i的存储单元,从而读取其中的值)。一个变量的地址称为该变量的“指针”。例如,地址2000是变量i的指针。如果有一个变量专门用来存放另一变量的地址(即指针),则它称

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

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

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