欢迎来到天天文库
浏览记录
ID:40238621
大小:1.06 MB
页数:29页
时间:2019-07-28
《C语言程序设计案例教程 沈大林 主编 张晓蕾 杨旭 王锦 朱立 编著 第4章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、目录第4章指针4.1【案例16】变量与指针●指针的基本概念●指针的定义与引用●空指针NULL●使用指针的注意事项4.2【案例17】计算字符串长度●指针与数组●指针的运算●指针与二维数组1目录4.3【案例18】图书查询●字符串指针●字符指针与字符数组●指针数组2案例源码4.1【案例16】变量与指针4.2【案例17】计算字符串长度4.3【案例18】图书查询34.1【案例16】变量与指针案例效果本案例中将演示变量、指针与存储空间三者之间的关系,程序运行效果如图4-1-1所示。图4-1-1变量、指针与存储空间在本案例实现过程中,将学习指针与存储空间的概念,指针变
2、量的定义与引用等。设计过程(见书)41.指针的基本概念相关知识1.指针的基本概念从前面的学习中知道,变量在定义后,将在内存中为其分配存储空间,变量在内存中具有唯一的地址,对变量的访问,实质上就是对变量存储空间的内容进行访问。这样,就可以用另一种方法来访问变量的内容,即不通过变量名,而是通过对变量在内存中的地址进行访问。这种访问方式就是指针访问。指针是C语言中一类非常重要的数据类型。在程序设计中,指针得到广泛的使用,它可以更好地表示复杂的数据结构,有些其他数据类型无法或很难实现的操作,都可以利用指针来完成。要学好C语言,必须对指针有深入的学习和掌握。要掌握
3、指针与指针变量,有必要先了解数据在内存中是如何存储和访问的。在计算机内存中,拥有大量的存储单元,每个单元以字节为单位。为了便于管理,系统按顺序为每个单元进行编号,每个单元都具有自己的唯一编号,这个编号就是该单元在内存中的地址。当在程序中定义一个变量时,系统就在内存中为该变量分配一个大小合适的存储空间,所需要的空间大小由变量的类型而定,一个int型变量占有2个字节,一个float型变量占有4个字节,而整型数组a[5]则占有2×5个字节。51.指针的基本概念例如:intn=10;floatpi=3.14;inta[5]={1,2,3,4,5};在上述定义执行
4、后,系统将在内存中连续为这些变量分配存储空间,假设变量的起始地址为1000,则这些变量在内存中的地址如图4-1-2所示。图4-1-2变量在内存中的存储由于各个变量在内存中所占存储空间大小不一,为了便于对变量地址的访问,将变量存储单元的起始地址定义为变量的地址。对于上面定义的变量,n的地址为1000,pi的地址为1002,a[0]的地址为1006。在变量定义完成后,这些变量就在内存中具有了一个唯一的存储空间,也就具有了唯一的变量地址,可以通过变量的地址对其进行访问。变量存储空间、变量地址与变量内容的关系就好象是仓库、仓库号与货物,可以将内存单元看成一个个的
5、仓库,内存地址就是仓库的编号,在定义变量时意思就是“将某号仓库分配给某人使用”,而变量的内容就相当于是仓库内的货物,在给变量进行赋值时相当于“将某某货物放到某号仓库”。61.指针的基本概念通常情况下,可以直接通过变量名对变量内容进行访问,而无需知道变量在内存中的地址,系统会自动将访问转换为对内存单元的访问,这种通过变量名来对变量存储单元进行访问的方式称为“直接访问”。C语言中还支持对变量的内存单元进行“间接访问”。这种访问形式允许将变量的地址赋给另一个特殊的变量,程序中可以利用这个特殊的变量来访问变量的内存单元,这个特殊变量称为指针变量。在图4-1-3中
6、给出了使用指针进行“间接访问”的图示。其中,变量n是一个int型变量,它占有两个存储单元,变量n的址为2001,变量n的值为999。变量p是一个指针,它本身存储在地址为1001的内存单元中,变量p的内容为变量n的地址2001,在这种情况下要对变量n进行访问时,可以从变量p中获得变量n的地址,再通过变量n的地址进行访问。此时,变量p称为指向变量n的指针。由于变量n占有多个存储单元,那么p是如何知道它所代表的是哪些单元的内容呢?因为变量n是一个int型变量,因此可以将p定义为一个int型指针,这样,在使用指针p访问变量n时,程序就知道所要访问的是一个int型
7、变量,int型变量占有两个存储单元,因此将对地址从2001开始的两个单元进行访问。图4-1-3变量的间接访问72.指针的定义与引用2.指针的定义与引用(1)指针的定义从前面的学习中,可以知道,所谓指针变量就是用来存放内存地址的变量。指针变量的定义方式如下:类型*变量名1;/*定义单个指针变量*/类型*变量名1,*变量名2…;/*定义多个同类型指针变量*/例如:int*p1,*p2;定义中,“*”表示变量p1、p2为指针变量,int表示指针p1、p2所指的变量是一个整型变量。定义指针时,每个指针变量前都要加“*”,例如,int*p1,p2;则是错误的,这样
8、定义后,p1是整型指针,而p2则是整型变量。下面是几种常见的指针变量定义:/*定
此文档下载收益归作者所有