admin 管理员组文章数量: 1086019
2024年12月29日发(作者:null译中文)
EDUCATION FORUM 教育论坛
C语言巾昀函数与指针
◆吴昊郭麦成杨亚仿
引言
随着计算机技术的飞速发展及应用领域的扩丈,
熟练掌握一门语言已变的尤为关键。c语言这门课程在
计算机的基础教学中一直占有比较重要的地位,然而要
想突破c语言的学习,对函数和指针的掌握是非常重要
的,本文将具体针对函数和指针的关系做详尽的介绍。
一
、
函数的有关概念
为了使程序的编写更加清晰、直观且易于修改,C
语言中引用了函数。所谓函数,就是一个程序模块,该
模块用来完成一个特定的程序功能。引用一个函数时,
需要包括对函数的定义、声明,继而调用。在掌握函数
相关概念的同时,有以下几点需要注意:
(1)调用函数和被调用函数
int A(mt a,…) int B(int b,…)
{ {
声明部分;B(a,…);执行部分; 声明
部分;执行部分;
} }
由上例可以看出,函数A在执行的过程中包括了对
函数B的调用,则函数A称为调用函数(调用函数B),
而函数B被函数A调用,称为被调用函数。
(2)实参和形参
调用函数中定义的变量是实参,被调用函数中定义
的变量是形参。如上例,函数A中的变量a是实参,函
数B中的变Ji!b是形参。
(3)实参变量和形参变量之间的独立性
实参变量和形参变量之间只存在值的传递过程,实
参变量的存储空间在调用函数中分配,而形参变量的存
储空间在被调用函数中分配,被调用函数执行完毕后,
其所分配的存储空间被释放,即形参变量的存储空间被
释放,它不会返回值给实参变量,也不会参与调用函数
的继续执行。例如(实现两个数的交换):
156 信息系统工程I 2011.4.20
main() void swap(inta,int b)
{ {
建匙b;i&££;
swap(a,b);{ § 致 ;
P r i n t f(“%d,%d”,a,b);
printf(“%d,%d”,a,b);
) )
显然,函数main是调用函数(调用函数swap),函
数swap是被调用函数。main函数中的a,b由main函数分
配存储空间,而swap函数中的a,b由swap函数分配存储
空间。main函数执行 ̄Uswap函数时,调用swap函数,
swap/ ̄数为其变量分配存储空间,然后实现了swap函数
中变量a,b的值交换,执行完毕后即释放其分配变量的
存储空间。继而,main函数继续执行,但其变量a,b没
有做任何改变,il1]main函数不能实现a,b的交换。由上
例可以看出,若单纯的使用变量,则被调用函数无法改
变调用函数中的变量值,即sw印函数无法实现main ̄数
中变量a'b的交换。
二、指针的有关概念
指针是C语言中功能最强大,使用最广泛的一种数
’据类型,主要用于描述存储单元的地址。通过使用指
针,可以在函数中进行传址调用。
(1指针变量的定义 1)
定义指针变量的一般形式:类型标识符 变量
名;其中,变量名前的符号“ 表示将要定义的变
量,类型说明符表示该指针变量所指向数据的类型。例
如:int p1;char p2;float掌l,3;
(2)指针变量的引用
&为取地址运算符,其一般形式为:&变量名,例
如:
int x=3, p;p=&x;指针变量p指向变量x。
在使用X的值时,可以直接使用X,也可以用 p来代
替使用x。此外,指针变量一定是和它所对应的变量相
EDUCATION FORUM教育论坛
互引用,即指针变量在使用时一定要有明确的指向,必
须赋予具体的值,否则将可能导致错误。
被调用函数执行完毕后,释放它所分配的存储单
元,而调用函数分配的存储单元仍继续使用。此外,只
有当调用函数中传指针值(即实参是指针值),而被调
三、指针与函数的关系
在函数的编写过程中,若单纯的只用变量参数,
用函数中引用变量(即形参收到指针值后,在函数体内
引用变量值),才能达到改变的目的。
则无法实现被调用函数改变调用函数中变量值的目的。
而为了实现这一目的,就需要函数和指针之间的结合使
例如,实现变量a和b的交换,程序如下:
void swap(int x, int y) void swap(int x, int y)
用。
(1)引用指针,可以实现调用函数和被调用函数中
的指针变量共同指向调用函数中的存储单元,从而实现
被调用函数改变调用函数中变量值的目的。例如:
main() void change(int p2)
{ {
int a,*pl; p2 3;
a=2;pl=&a; )
change(p1);
printf(“the value of a is:%d”,a);
}
由上例可以看出,在调用函数(main函数)中定
义了变量a和指针变量p1,被调用函数(changelN数)
中定义了指针变量p2。程序首先从main函数开始执行,
分配变量a和指针变量P 1的存储单元,此时指针变量p 1
指向变量a(P1=&a)。当程序执行到change函数时,
程序跳转到change函数执行其函数体,changel ̄i数为
其指针变量p2分配存储单元,同时p2也得到了P1传过
来的值(变量a的地址),此时p2也指向了调用函数中
的变量a,即实现Ypl和p2共同指向了调用函数中的存
储单元(变量a的存储单元),changes数执行其函数
体(*p2=3),即使a的值变为3。changes数执行完毕
后,释放其变量的存储空间,转而继续执行main函数,
此时a的值已经发生改变(由2变为3),实现了被调用
函数改变调用函数中变量值的目的。
(2)调用函数和被调用函数中实参和形参之间的关
系图
{ {
int t; int t;
C=x;x=y;y=t; 水’C= x;水x:木y;木y=木t;
} }
(例1) (例2)
例l虽然传的是指针值,但在函数体的执行过程中
引用的仍然是指针值(引用X和Y),所以不能实现a和b
的交换;例2程序传指针值后,引用变量( x和 y,即a
和b),所以能实现a和b的交换。
四、结束语
在以后的编程过程中,若遇到想通过被调用函数改
变调用函数中变量值的目的,则可以把该变量的地址值
传给被调用函数,从而达到改变的目的。鉴于文章篇幅
及个人能力有限,本文肯定还存在许多不足之处,仅供
大家学习和参考。 辩
参考文献
[1】谭浩强.c程序设计[M].二版 清华大学出版社,2004.
【21杜友福.c语言程序设计【M】.二版科学出版社,2007.
[3]陈志泊,王春玲.面向对象的程序设计语言一一c++『M】.人民邮
电出版社,2002
(作者单位:长江大学计算机科学学院)
信息系统工程l 201 1.4.20 1 B7
版权声明:本文标题:C语言中的函数与指针 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1735572065a1677051.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论