C语言基础归纳 ---函数

函数通常的形式如下:
1. returnType functionName( arg1Type arg1, ..., argNType argN )
2. {
3. statements
4. }
一个简单函数示例如下:
1. float salesTax( float purchasePrice, float taxRate )
2. {
3. float tax = purchasePrice * taxRate;
4. return tax;
5. }
可以这样来调用一个函数:先写函数名,后面跟着一个括号括起来的表达式列表,其中每个表达式对应函数的一个参数。每个表达式类型必须与声明中的函数参数的类型一一对应。如下的示例展示了一个简单的函数调用:
1. float carPrice = 20000.00;
2. float stateTaxRate = 0.05;
3.
4.
5. float carSalesTax = salesTax( carPrice, stateTaxRate );
当执行函数调用的那行代码时,控制跳转到函数体中的第一条语句。执行继续进行,直到遇到一条return 语句,或者到达函数的末尾。执行随后返回到调用环境中。在调用环境中,函数表达式的值就是return 语句所设置的值。
注意 函数并非必须有参数或返回一个值。没有返回值的函数,其类型为void:
1. void FunctionThatReturnsNothing( int arg1 )
在不返回值的函数中,可以省略return 语句。通过对参数列表使用空的圆括号,来表示不接受任何参数的函数:
1. int FunctionWithNoArguments()
函数有时候仅仅为了其副作用而执行。下面这个函数打印出了销售税,但是,它对程序的状态没有做出任何修改:
1. void printSalesTax ( float purchasePrice, float taxRate )
2. {
3. float tax = purchasePrice * taxRate;
4. printf( "The sales tax is: %f.2\n", tax );
5.
6. }
C 函数根据值来调用。当调用一个函数时,计算调用语句的参数列表中的表达式,并且将它们的值传递给函数。函数不能直接修改调用环境中的任何变量的值。下面这个函数对于调用环境中的任何内容没有影响:
1. void salesTax( float purchasePrice, float taxRate, float carSalesTax
)
2. {
3. // Changes the local variable calculateTax but not the value of
4. // the variable in the calling context
5.
6. carSalesTax = purchasePrice * taxRate;
7. return;
8. }
要改变调用环境中的变量的值,必须传入一个指向该变量的指针,并且,使用指针来操作该变量的值:
1. void salesTax( float purchasePrice, float taxRate,
float *carSalesTax)
2. {
3. *carSalesTax = purchasePrice * taxRate; // this will work
4.
5. return;
6. }
注意 前面的例子仍然是按照值来调用的。将调用环境中的一个变量的指针的值,传递给了该函数。然后,该函数使用这个指针(它没有修改)来设置它所指向的变量的值。

声明函数
当调用一个函数时,编译器需要知道函数的参数和返回值的类型。它使用这一信息来建立函数与其调用者之间的通信。如果函数的代码出现在函数调用之前(在源代码文件中),那么你不必做任何其他的事情。如果函数代码在函数调用的后面,或者位于另一个文件中,则在使用函数之前必须先声明它。
函数声明重复了函数的第一行,而且在末尾添加了一个分号:
1. void printSalesTax ( float purchasePrice, float taxRate );

常用的做法是将函数声明放入到一个头文件中。然后,将头文件包含到使用该函数的任何文件中。



注意 忘记声明函数,可能会导致很隐蔽的错误。如果调用一个函数,而这个函数的代码在另一个文件中(或者在同一个文件中,但是位于函数调用之后),并且,你没有声明该函数,那么编译器和连接器都不会给出提示。但是,该函数将会针对任何浮点参数接收垃圾信息,并且,如果函数的返回类型也是浮点数的话,那么它会返回垃圾信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值