资源描述:
《c_c_指针变量的使用原则与注意的问题》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、第20卷第2期武汉水利电力大学(宜昌)学报Vol120No121998年6月J1ofUniv1ofHydr1&Elec1Eng1/YichangJun11998XC/C++指针变量的使用原则与注意的问题涂德重(电气工程系)摘要用实例详细地阐述了C/C++语言指针变量的使用原则和方法,同时还指出了实际应用中需要注意的问题.关键词C/C++语言;指针;指针变量分类号TP312目前,程序设计语言的应用越来越普及,而C/C++语言具有独特的优点,因而更加受到软件开发者的欢迎和喜爱.然而要真正用好C/C++语言也决非易事,必须下一番功夫.C/C++语言中最灵活最具有特色的就是指
2、针变量.如何理解和使用好指针变量是编程人员编写高质量的软件的关键.在程序设计中,可以定义变量本身,也可以定义指向变量的地址指针)指针变量,即变量的物理存储空间.这样就可以使编程人员能够对数据结构中所定义的链结构类型(如链表、栈、队及树等动态分配单元)得以实现,从而对它们进行存取操作,特别是C++的类和自定义结构的存取更是如此.要高质量地、有效地开发一些应用程序和系统软件必须很有效地使用指针变量.一个编程人员对指针及指针变量掌握和熟练的程度从某种角度来说决定了他编写程序的高低.1指针变量的定义指针类型的变量,它用来定义指向对象的指针,也就是定义指向分配对象存储区域的地址
3、.它通常说明某个变量具有指针类型的一般格式为type*指针变量名;或者更精确地定义为type[修饰符]*指针变量名.这里[]方括号为可选项,可有可无.缺省时为近指针.type为指针指向的数据类型.修饰符可以是near,far,huge.它们分别是近、远、巨大三种指针.near指针为一16位指针,它存取的区域只是DS寄存器段,范围为64K.而far指针可以在内存中任意段设置DS,而段内偏移可取0~0FFFFH的任意值(每段64K).而huge指针为巨大指针(绝对指针),它可以在内存中任意移动和设置.type数据类型为C语言中所规定的数据类型,它有基本类型和构造类型,指针
4、使用说明方法如下:X收稿日期:1997-09-23涂德重,高级工程师,硕士,从事计算机管理及软件开发工作.武汉水利电力大学(宜昌)电气工程系(443002)第20卷第2期涂德重C/C++指针变量的使用原则与注意的问题43float*fp;//说明fp为指向float类型对象的指针变量structnode*treep;这里node为构造类型,定义如下structnode{intinformation;structnode*father,*brother,*son;};这样,就定义了treep,它指向构造类型node对象的指针变量.下面,列举一些常用的指针变量的定义方法.
5、int*ip;/*定义指向整形变量的指针*/int*fip();/*定义指向函数返回的整形变量*/int(*pfi)();//定义指向一个函数的指针,此函数返回一个整形变量int*p[n];//定义整形指针数组p[n],这数组每一元素为一指针int*(*pfpi)();/*定义一个指向函数的指针,而该函数又返回一个指向整数的指针*/int(*p)[n];/*定义一个指向n个整形元素的一维数组指针*/int**p;/*定义p为二次变址指针,p为指针变量,它指向一个整形数的指针*/当然,仿此还可以定义3次变址,4次变址指针,但多次变址指针在程序中很少使用.2指针变量的使用
6、方法原则上讲,凡在程序中使用变量的地方都可以使用指针变量代替.但是有些地方变量结构太大或者使用变量影响程序的执行效率时,一般使用指针变量为好.下面就笔者的体会作一概括.(1)用指针变量提高程序的执行速度和效力例1定义一个学生变量structstudent{intnumber;/*定义学号*/charname[10],sex[4];/*定义姓名、性别*/intfen;/*定义学生成绩*/structstudent*prep,*nextp;/*定义指向前一学生的前趋指针,指向后一学生的后继指针*/};如果对此记录进行排序操作,显然可以想到指针进行运算比较方便,只须改变记录
7、中前趋及后继指针变量的值即可完成这一排序工作.这一点显然比其他的运算快速简便,其功效和速度是显而易见的.为此,可以编写如下的程序片断insted=readstud();//读一学生记录,此记录指针送入insted这一//指针变量addstud(insted);/*进行排序操作*/44武汉水利电力大学(宜昌)学报1998年6月这里定义addstud()函数如下voidaddstud(structstudent*p){next=head;//head为头指针,指向第一条记录的地址while((nextynumber