c语言基础教程 - 第五章函数和存储类免费版(3)

2019-06-02 17:09

{

foat x,y, int sum;

printf(\“); scant(\ sum=add(x,y);

printl (\} addt(x,y) float x,y. {

return (x+y); 运行情况如下: Input x,y:1,3,7,9 sum=9 说明:

(1)该程序由两个函数组成,一个是main()函数,它无参数,也无返回值;另一个是add()函数,它有两个参数x和Y}都是float型的。它有int型返回值。因此,定义该函数时可以不加类型说明,调用该函数之前也可不加说明。

(2)在main()中,x和Y作为addt)函数的实参;在add ( )函数中,x和Y作为add函数的形参。虽然名字相同,但它们在内存中有着不同的存储单元。调用add()函数时,其形参与实参是一致的,即个数相等,对应类型相伺。

(3)在被调用函数add()中,返回值的表达式x十Y的类型是float型的,其值应为i_. 3十7.9,即为9. 2 0由于函数add必的类型为int型的,因此,要将9. 2自动转换为int型数9,再返回给调用函数,即赋值给int型变量sum。

5.3.1传值谓用的特点、

这里所讨论的传值调用是指传递变量值的调用方式。在这种调用方式中,实参使用变量名或者表达式,形参使用变量名。在调用时,调用函数将实参值拷贝到一个副本给形参,即使形参按顺序从对应的实参中获得值,这就相当于将实参值对应地赋给形参,使形参获值。这种调用方式具有如下特点:被调用函数的参数值被改变而不会影响调用函数的参数值,因此安全性好。 [例5.3] 分析下列程序输出结果。 执行该程序输出结果如下: Main( ) (

float a,b;

void fl()\ a=7. 2; b=3. 6; fl(a*b);

printf ('\,2f\\n\}

void fl(x*y) float x.y; (

x+=0. 5; y一=0.5;

printf (\,%.2f\\n\,x,y); {

7.70,3.10 7.20,3.60 说明:

(1)该程序由两个函数组成,一个是主函数main ( ),另一个是被main( )函数调用的被调用函数f1().在定义fl()函数时,使用了void说明该函数无返回值。因此,在调用f1()函数之前必须说明flt)函数,因为调用在先定义在后。

(2)主函数中,调用fl ()函数时,两个实参都是变量,即a和b.被调用函数的两个形参也都是变量,即x和y,这是属传递变量值的传值调用方式。在被调用函数fl()中,通过两个赋值表达式语句分别对形参x和Y的值进行改变,并通过printf ( )语句输出改变后的x和Y的值:7. 70, 3 ,10.返回主函数后,执行printf)语句输出主函数中的a和b值为7.20, 3.60.可见,a和b值没有因为调用函数fl()而改变其值。尽管在fl()函数中对其形参x和Y进行了改变。可见,这种传值调用方式使得被调用函数中参数值的改变不影响调用函数的参数值,其原因是因为这种调用方式是调用函数将其实参值拷贝了一个副本给了被调用函数的形参,被调用函数中改变形参的值,只是改变了副本中的值,对调用函数中的\正本\没有改变。

5.3.2 传址调用的特点

传址调用是指在调用时传递变量地址值的传值调用。传址调用时要求调用函数的实参用地址值,而被调用函数的形参用指针,于是函数之间进行地址值的传递。这种传递是将实参的变量地址值传递给形参指针,即让形参指针指向实参变量,这种传递方式与调用函数拷贝实参值的副本给形参是不同的,它是让形参指针直接指向实参的变量。这种传址调用具有如下特点:被调用函数中可以通过改变形参所指向的内容来改变调用函数的实参值:这一特点与前面讲过的传值调用是截然不同的。传址调用可以通过改变形参所指向的内容来改变实

参值,这就提供了函数之间进行信息传递的又一渠道,并且这种传递信息的方式还可以克服前面讲过的返回值方式的只传一个信息的局限性。因此,传址调用在C语言函数调用中是经常采用的方式。后面还会看到这种调月方式将会带来其他好处。

下面举一个传值调用方式和传址调用方式不同的例子,并且将看到这两种传递方式可在同一个k}数调用中实现。 [例5.4] 分析下列程序输出结果。 Main() {

Int a,b,c, b=c=a=5; Fl(n,&b,&c);

printf(f'%d,%d,''d\\n\); )

Fl(x,y.z) int x*y,* z: { X*-2 y一一x; *z=x十* y:

printf (\)


c语言基础教程 - 第五章函数和存储类免费版(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:马河小学绩效方案文档

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: