欢迎来到天天文库
浏览记录
ID:5325341
大小:1.19 MB
页数:4页
时间:2017-12-08
《浅析c语言使用指针的必要性》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、第21卷第8期长春大学学报Vol.21No.82011年8月JOURNALOFCHANGCHUNUNIVERSITYAug.2011浅析C语言使用指针的必要性李柯景,鲁光男(长春大学计算机科学技术学院,长春130022)摘要:指针是C语言的重要组成部分。灵活的使用指针可以提高程序的执行效率,可以建立动态数组,可以灵活的处理字符串等等。本文简要介绍了指针的重要作用,从而使初学者更好地了解使用指针的必要性。关键词:C语言;指针;程序效率;动态数组中图分类号:TP311.11文献标志码:A文章编号:1009-3907(2011)08-00
2、38-040引言经过多年承担C语言程序设计这门课的教学任务,笔者发现学生在初学指针的时候,理解和掌握关于指针的基本概念并不是很难,但往往在学完指针的基本使用方法之后还是不能够深刻理解指针在C语言中的重要作用。因此,笔者对C语言使用指针的必要性做简要的总结,便于学生更好的掌握和理解指针的概念,灵活的应用指针。1利用指针可以提高程序的效率1.1利用指针实现对数组元素的间接访问在C语言程序设计中,我们可以通过变量的指针(即变量的内存地址)来引用内存单元的值,这种方式称为间接访问。对于数组,采用指针变量自增运算引用数组元素要比利用数组名称直
3、接访问的方式执行效率高。比如:程序段1(利用数组下标变化访问):inti;ints[100];for(i=0;i<100;i++){s[i]=0;}程序段2(利用指针间接访问)inti;ints[100];int*p;for(p=s;p<s+100;p++){*p=0;}以上两个程序段完成的功能都是一样的,都是让数组s中的所有元素的值均为0。程序段1中,每寻址一个数组元素都要进行地址的算术运算,即a[i]=*(a+i)。要通过数组名加上偏移量来实现对每个数组元素的访问。而程序段2只需要通过指针的自增运算来实现对数组元素的访问。由于自
4、增运算的执行效率收稿日期:2011-06-20作者简介:李柯景(1980-),女,吉林长春人,讲师,硕士,主要从事计算机应用方面研究。第8期李柯景,等:浅析C语言使用指针的必要性39较高,因此程序段2的执行效率要比程序段1的高。1.2利用指针实现对字符串的灵活处理C语言中利用字符数组存放字符串,可以方便地使用指向字符的指针变量操作字符串。通过指针的移动来实现对不同位置字符的访问。如果是多个字符串还可以通过字符型指针数组来实现对多个字符串的灵活处理。如程序1:#include"stdio.h"#include"string.h"voi
5、dmain(){char*name[]={"Melissa","Bob","Tom","Peter"};inti;for(i=0;i<4;i++)puts(name[i]);}对于"Melissa","Bob","Tom","Peter"这四个长度不等的字符串,可以采用字符数组进行存放。由于二维数组的列数是相等的,若采用二维数组进行存放则比较浪费存储空间。采用字符数组则可以解决这个问题。可以通过循环,利用指针数组元素下标的变化来实现对不同字符串的访问,大大提高了程序的效率。每个指针数组元素对应一个字符串,倘若相对多个字符串求最大值或
6、者进行排序操作,只需要通过改变指针数组中个元素的指向,就可以实现,节约了大量移动数据的步骤,程序的效率得到提高。1.3利用函数指针提高程序的效率[4]函数指针为指向函数的指针。函数在内存中占据连续的一片存储单元,而函数名就是这片存储单元的首地址。可以通过对指向函数的指针变量的访问来完成对函数的调用。如程序2所示:#include"stdio.h"#include"math.h"voidmain(){double(*p[2])(double)={sqrt,fabs};intx,data;printf("Pleaseinputdata=
7、?");scanf("%d",&data);printf("Pleaseinputx(O-sqrt,1-fabs)=?");scanf("%d",&x);printf("%lf",(*p[x])(data));}程序2中,定义了一个指向函数的指针数组,数组中的两个元素分别指向函数sqrt和fabs。因此当键盘上输入数据data后,根据用户的选择就可以实现对所输入的数据进行开平方或者求绝对值的操作。对这两个函数的调用,是通过访问指针数组元素来实现的。倘若程序中所需要调用的函数不仅仅有两个,而是更多。那么就需要用多个的if语句或sw
8、ich结构去判断哪个函数被调用哪个不被调用。那就需要大量的代码。若采用指向函数的指针数组来完成则可以省略大量的代码书写。通过指针数组下标的变化实现对不同函数的调用,省去了大量编写代码的工作量,代码的执行效率也得到提高。通过以上的介绍,
此文档下载收益归作者所有