第八章地址和指针复习过程.doc

第八章地址和指针复习过程.doc

ID:60782455

大小:42.00 KB

页数:12页

时间:2020-12-18

第八章地址和指针复习过程.doc_第1页
第八章地址和指针复习过程.doc_第2页
第八章地址和指针复习过程.doc_第3页
第八章地址和指针复习过程.doc_第4页
第八章地址和指针复习过程.doc_第5页
资源描述:

《第八章地址和指针复习过程.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、精品好文档,推荐学习交流第八章地址和指针8.1变量的地址和指针在程序中变量实际上代表了内存中的某个存储单元。那么C是怎样存取这些单元的数据内容的呢?我们知道计算机的内存是以字节为单位的一片连续的存储空间,每个内存单元都有一个唯一的编号,我们将其称为“内存地址”。计算机对数据的存取操作都是依赖于内存地址进行的。因为计算机的内存空间是连续的,所以内存中的地址空间也是连续的,并且用二进制数据来表示,为了方便和直观,我们将用十进制数据进行描述。若在程序中定义了一个变量,C编译系统就会自动根据变量的类型,为其分配一定字节数量的存储空间。如int型2个字节,float型4个字节,double型8个字节

2、,char型1个字节等。此后,这个变量的内存地址也就唯一的确定了。一般情况下,我们在程序中只要给出变量名,不需要知道每个变量在内存中的具体地址,变量与地址之间的联系由C编译系统来完成。程序中我们对变量进行存取操作,实际上就是对变量地址的存储单元进行操作。这种直接按照变量地址进行存取的操作方式称为“直接存取”方式。在C语言中我们还可以定义一种特殊的变量,这种变量只是用于存放内存变量地址的。如:p93图8.2这种通过变量p间接得到变量a的地址,然后再存取变量a的值的方式称为“间接存取”的方式。这种用来存放地址的变量称为“仅供学习与交流,如有侵权请联系网站删除谢谢12精品好文档,推荐学习交流指针

3、变量”或“指针”。由此我们可以知道,在C语言中,地址是指变量在内存中的存放的位置,即存放该变量的内存单元的名字。而指针是指一个变量,在该变量中存放的是其指向的那个变量在内存存储单元的地址。也就是说,变量的地址就可以理解为指针。在C语言中,指针被广泛使用,他可以使程序简洁并高效运行,但使用不当就会产生意料不到的严重后果。因此,正确使用和掌握指针是十分必要的。8.2指针变量的定义和基本类型定义指针变量的形式:类型名*指针变量名1,*指针变量名2,……;例如:int*pi,*pj;float*i,*j,*k;double*l,*m,*n;char*c,*s;在每个变量前面的星号*是一个指针说明符

4、,用来说明该变量是指针类型。变量前面的星号*不可以省略。指针变量名前面的类型定义是说明指针指向的数据类型。另外,我们还可以定义一个指向指针的指针变量。定义形式为:类型名**指针变量名1,**指针变量名2,……;仅供学习与交流,如有侵权请联系网站删除谢谢12精品好文档,推荐学习交流例如:int**p,*s,k=90;s=&k;p=&s;其中&符号表示取变量的内存单元地址运算,后面介绍。为什么指针变量要有类型之分呢?如前面所述,指针变量中存放的是一个内存单元的地址,这里“一个内存单元”中的“一”所代表的字节数是不同的。如int型2个字节,float型4个字节,double型8个字节,char型

5、1个字节等。在后面的指针运算中我们经常要对指针进行加、减、移动等操作,此时指针操作的单位是一个存储单元,而不是一个字节,因此对于不同类型的指针变量来说,其操作时所跨越的内存字节数是不同的。如:定义一个指针变量i(存放的初始地址为2060H),当我们执行i++操作时,不同类型的指针变量所移动的字节数是不同的。8.3指针变量赋值一、给指针变量赋地址值一个指针变量可以通过不同的方式获得一个确定的地址值,从而指向一个具体的操作对象。1、通过取地址运算符(&)获得地址值单目运算符“&”的作用是用来获取变量的内存单元地址。其使用格式为:&变量名。如:intk=80,h=100,*p,*q;则赋值语句为

6、仅供学习与交流,如有侵权请联系网站删除谢谢12精品好文档,推荐学习交流p=&k;q=&h;其指向关系见书p94图8.3我们可以说:指针p指向了整型变量k,和指针q指向了整型变量h。即:指针变量p中存放了整型变量k所在的存储单元地址,和指针变量q中存放了整型变量h所在的存储单元地址。取地址运算符(&)只能够用于变量和以后将要介绍的数组元素,不能够应用于表达式、常量或者被说明为register的变量(第12章介绍)。另外,&符号必须要放在运算对象的左边,而且运算对象的类型必须与指针变量的基本类型相同。在调用scanf函数时,我们输入的各变量之前必须要加&符号。如:scanf(“%d%c%f”,

7、&a,&b,&c);2、通过指针变量获得地址值我们可以通过赋值,把一个指针变量中地址赋给另一个指针变量,从而使两个指针变量指向同一个地址。如:intk=80,*p,*q;p=&k;q=p;此时,指针变量p和q都同时指向了整型变量k所在的内存单元地址。但是要注意,进行赋值运算时,赋值号两边指针变量的基本类型必须要相同。二、给指针变量赋“空”值有时我们还需要给指针变量赋“空”值,形如:p=NULL;NULL是在”stdio.

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

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

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