欢迎来到天天文库
浏览记录
ID:40238392
大小:1.63 MB
页数:80页
时间:2019-07-28
《C_C++程序设计李云峰 第6章 利用指针编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章利用指针编程问题原由指针是在基本数据类型基础上扩展而得到的数据类型,是C语言的特色和精华所在,是灵活高效访问数据的手段。怎样利用指针的特性设计出高效的算法程序?这就是本章所要讨论的问题。指针的定义与引用、指针数组与数组指针、指针与函数、动态内存分配与动态数组、指针案例程序设计等。教学重点能力要求掌握:指针的基本概念;掌握:利用指针进行程序设计的方法;熟悉:动态内存分配与动态数组的使用,能利用指针设计出高效的实际应用程序。§6.1指针的定义与引用组§6.4动态内存分配与动态数组§6.3指针与函数§6.2指针与数组本章主要介绍的内容§6.5案例程序设计第6章利
2、用指针编程§6.1指针的定义与引用指针是C语言中一种非常重要的数据类型,也是C语言的重要特色之一。C语言之所以成为目前执行效率最高的高级语言,主要得益于指针功能的强大,它可以直接对内存中各种不同的数据结构进行快速的处理,并能为函数之间数据的传递提供简捷、便利的方法。由于指针是与计算机系统内部密切相关的一种处理形式,所以使用指针可编制出简洁明快、优质高效的程序。然而,指针又是C语言中最危险的特性之一,如果指针使用不当,将会导致系统崩潰。因此,熟练地掌握和正确地使用指针是至关重要的。6.1.1指针概念的引出【问题描述6-1】抗日战争时期的上海,地下工作者007号接到
3、上级指令,前去寻找打开密电码的密钥(设密钥为整数)。007号探知的线索是:密钥藏在一栋废弃的小楼中,在一个风雨交加的夜晚,007号潜入了小楼,正当007号一筹莫展时,忽然走廊上的电话铃声响起,007号毫不迟疑地抓起听筒,只听一个陌生的声音说:“去打开315号”房间,那里有线索”。007号立即上楼,打开315房间,用电筒一照,只见桌上有一张字条,上面写了一个数字:715。007号眼睛一亮,迅速找到715号房间,取出重要密钥“10111”,完成了任务。6.1.1指针概念的引出一、问题分析如果我们把小楼看成是一个存储器,把小楼中的房间看成存储单元,把房间号看成是存储单
4、元的地址(简称为存储地址)。那么,存储地址315的存储区存放的内容为715,而存储地址715的存储区存放的内容为10111。如果用变量p代表存储地址为315的存储单元,用变量q代表存储地址为715的存储单元,那么变量p保存的内容为715,它是变量q对应的存储单元的地址,在这个存储单元中保存的内容即为10111。这时,我们称变量p为指针变量,指针变量p和变量q之间的关系如图6-1所示。二、程序实现#includeintmain(void){intkey=10111//变量key存放密钥int*addr=NULL;//指针变量addr存放内存地址a
5、ddr=&key;//将key的地址赋给addrprintf(“Thekeyis:%d”,*addr);printf(“Theaddressofthekey:%d”,&key);}[运行程序]Thekeyis:10111Theaddressofthekey:7156.1.1指针概念的引出6.1.2指针与内存地址的关系1、存储单元与存储地址存储器是计算机中的存储部件,它分为内存储器和外存储器两类,内存储器被划分成许多单元,称为存储单元(内存单元),每个存储单元存放一个字节的数据即一个字节的数据在内存中存储时占用一个内存单元。为了便于区分这些存储单元,必须给
6、每个存储单元一个编号,这个编号被称为存储地址(内存地址)。不同类型数据所占用的存储单元数目不等。例如,整型数据占2或者4个单元(16位系统中占2个单元,32位系统中占4个单元),字符数据占1个单元,单精度浮点数据占用4个单元等(这些内容在第2章已有详细的介绍)。数据类型、存储地址、存储单元之间的关系如图6-2所示。图6-2数据类型、存储地址、存储单元的关系存储单元11111111……0011011011010101010101011110011001001001数据按照类型存储字符型C整形数x所占4个存储单元的地址号存储空间存储地址11111111……00000
7、100000000110000001000000001000000006.1.2指针与内存地址的关系6.1.2指针与内存地址的关系2、存储地址与变量名对处理大量的数据使用有意义的变量来代替内存的地址,程序员只需要为待处理的数据取一个好记的变量名,这个变量名就代表要处理的数据。在内存中既没有形如x,y,z这样的变量名(对变量的存取都是通过地址进行的),也没有形如8、9、10这样的数据(二进制数)。例如“printf(“%f”,x);”的执行是根据变量名与地址的对应关系找到变量的存储地址0012FF02,然后从0012FF02开始的字节中读出数据(00001011)
8、,将它输出。又如“sca
此文档下载收益归作者所有