欢迎来到天天文库
浏览记录
ID:25169113
大小:52.00 KB
页数:4页
时间:2018-11-17
《c语言教学中函数参数传递问题探讨》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C语言教学中函数参数传递问题探讨C语言教学中函数参数传递问题探讨 1概.Lp; temp=x;x=y;y=temp; } voidmain() { inta,b; scanf("%d%d",a,b); swap(a,b); printf("%d%d",a,b); } 输入:12 输出:12 4指针作为函数参数 变量的指针就是变.Lp;a; *p=11;//间接访问方式 指针类型作为函数参数时,参数传递方式仍然是值传递,即把实参的值传递给形参。不同的是参数为指针变量,可
2、以通过形参的间接访问方式来读取或修改主调函数中有关变量的值。 如下例所示,通过值传递,形参x保存了变量a的地址,形参y保存了变量b的地址,即x指向变量a,y指向变量b,在sp; temp=*x;*x=*y;*y=temp; } voidmain() { inta,b; scanf("%d%d",a,b); sp;a,b); printf("%d%d",a,b); } 输入:12 输出:21 5数组名作为函数参数 数组元素和数组名也可以作为函数参数,数组元素作为函数参数
3、与普通变量用法相同,数组名作为函数参数与指针变量相同。 用数组名作函数形参时,指定数组大小是不起任何作用的。因为C语言编译对形参数组大小不做检查,只是将实参数组的首地址传递给形参数组。实参数组名即是实参数组的首地址,相当于指针常量;形参数组名相当于指针变量。实际上,C编译都是将形参数组名作为指针变量来处理的[3]。所以,数组名作为函数参数可以按指针作为函数参数来理解。 如下例所示,数组名array代表数组array的首地址,通过值传递,形参数组名a,也可以理解为形参指针变量a,保存了数组arra
4、y的首地址,因此,在sp; temp=a[0];a[0]=a[1];a[1]=temp; } voidmain() { intarray[2]; scanf("%d%d",array[0],array[1]); swap(array); printf("%d%d",array[0],array[1]); } 输入:12 输出:21 6结论 综上所述,C语言函数参数问题主要涉及两个概念:传递方式和数据类型。实参与形参的传递方式只有一种,即值传递。参数的数据类型可以为普通类
5、型、指针类型和数组类型,数组类型实际上是按指针类型来处理的,所以,主要是指针类型与非指针类型的区别。对初学者来说,问题的难点在于数据类型的不同而非传递方式,即指针类型变量与非指针类型变量的区别。
此文档下载收益归作者所有