C语言中指针运用的研究
钱惠恩
(浙江工商大学统计与数学学院信息与计算科学专业,浙江杭州210018)
明嘲糟针蔗c语寓的棱心。被广泛使用。它和擞组、字缔串、函数阍教播的传i蠢有看密不可分的联系,它的使用方式与方法缀常使初学者惑列迷惑。
D蝴】糯钟;播钟变量;基本用法;常见问题
1指针的基本概念
由计算机的工作原理我们知道,程序和数据都是以二进制代码的形式存放在内存中的,内存中的每个字节都有一个唯一地址。如果要对一个数据进行一定操作,只有按照地址先到这个数据,才能进行下一步的操作。在C语言中,当我们定义了一个变量时,内存中就会为此变量分配一定的存储空间,这时,就有唯一地址与此变量相对应。当我们引用变量名访问数据时,系统通过此变量名到与之对应的内存地址,然后在对此地址下存放的数据进行操作。对程序员来说,中间这个过程是透明的,就像是通过变量名直接访问数据一样。这种通过变量名访问内存空间中数据的方式称为直接访问。
C语言提供了这种特殊类型的变量——指针类型。这种类型的变量和其他变量一样,定义后在内存中占据一定的存储空间,用来存放数据,只不过这个数据将会被解释为地址。所以,指针就是指地址。对于一个指针变量,它的定义方式为:数据类型关键字,’变量名指针变量中存放的值为另一变量在内存中的地址,而指针变量的数据类型即其值所指地址中存放的数据的数据类型,*则标识此变量为一指针变量。
2C语言指针应用的优点
指针是C语言的一个重要概念,也是C语言的一个重要组成部分,正确灵活地使用指针,能帮助我们解决许多实际问题。主要有:1)指向单变量的指针变量作为函数参数,可以得到多个变化了的值,即函数调用可以而且只可以得到一个返回值,而运用指针变量参数,就可以得到多个变化了的值。2)指向数组元素的指针变量处理数组,可以大大提高执行效率,所以指针使用熟练时,尽量使用指针处理数组。3)指向字符串的指针变量构成指针数组处理多个字符串时可以节省内存空间,还可以提高程序的执行效率。4)指向结构体变量的指针作函数参数,可以节省时间和空间,提高执行效率。5)指向量FILE类型结构体的指针变量,可以到与之相关的文件,从而实现对文件的访问。6)指向函数的指针作函数参数,可以使一个通用函数实现各种专用功能。
3指针使用过程中的常见问题
31指针的初始化
先看一个例子:
In t。p t r;
’ptr=1;
pt r确实是一个指针,但指向哪里呢?上述代码没有将地址赋给pt r o那么1将被放在哪都不知道。pt r没有被初始化,可能有任何值。不管值是什么,程序都将解释为存储1的地址。如果pt r的值碰巧为1200,计算机将把数据放在地址1200上,即使这恰巧是程序代码的地址。pt r指向的地方很可能并不是所要存储1的地方。这种错误可能会导致一些最隐匿、最难以跟踪的bug。
一定要在对指针应用取内容操作符(。)之前,将指针初始化为一个确定的、适当的地址。修改以上例子为:
i nt。pt r=&a;
不要将”i nt。pt r=&a:”与”+pt r=&a;”混淆。前者是定义语句,。是指针定义符,C编译器为pt r指针分配一个指针空间,并用a的地址值初始化。
32对指针变量赋值
1)指针变量的赋值只能赋予地址
2009年1111
先看一个例子:
i nt b;
i nt。q;
q=&b:
程序中是不允许把一个数直接赋予指针变量的。指针变量的赋值只能赋予地址,不能赋予任何其它数据,否则将引起错误。C语言中提供了地址运算符&来表示变量的地址。其一般形式为:&变量名:如&a 变示变量a的地址。
2)不同类型的指针不能相互赋值
先看一个例子:
i nt’p;
do ubl ea=5,‘q=&a;
p=q;
指针是有具体类型的,在给指针赋值时,不但要求是地址,而且应该是一个与该指针类型相符的变量或常量的地址。以上语句中在p=qi 这条语句上存在错误,因为P是一个整型指针,只能存放i nt型数据的地址。而q指向了一个双精度型变量,里面存放doubl e型数据。二者类型不相匹配,因此在编译时会发生错误。初学者往往注意了将地址赋值给了指针,而忽略了其类型。
3)指针在函数之间的传递
先看一个例子:
voi df un(i nt。X,i nt。计
(pr i nt f f%d,%d,’x,+啪;
。×=3;。V=4;
m al nO
自nt x=1,y=2;
f un(&y,&蛐:
pri nt ff I%d,%硝,X,”;
}
c语言指针实验总结
在C语言程序中,可以通过传递指针的方式,在被调用函数中直接改变调用函数中变量的值,达到函数之间数据传递的目的。主函数m ai nO在调用函数f unO的同时,把变量Y与X的地址传递给指针变量X 与Y,注意m ai nO dP的X、Y与funO中X、Y是不同的。前者代表普通变量,后者为指针变量。第一次输出数据值发生在funO函数中,输出。X 就相当于输出y的值,结果为2,。Y的值为1.之后改变+x与+y的值,通过指针返回给m ai nO函数,从而改变了Y与X的值,因此第二次输出结果为4,3。
4总结
C语言指针的使用灵活,大多数初学者在实际编程中很容易出错,而且这种错误往往又难以发现,因此在教学后期建议学生大量地上机调试程序,以弄清一些细节,并积累经验,为后续课程打好坚实的基础。
(参考文献】
【1】谭浩强著.C程序设计肼1.第=版_E京:清华大学出版社,1999.
【2】R D bc廊E S著.C谮富的科学稻艺术f M】.翁惠玉等译.北京:机械正业出版社,2005.
【3l K d'a i s k a a B W,R dt ehie D M著.c程序设计语富fM】.第2版.徐宝文等译.
北京:gt撤I业出版社,2005.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。