C/C++通用
1.函数定义
[储存类型] 函数名 ([形式参数说明形式])
{
说明部分
语句部分(函数体部分)
}
说明:
-
命名规则同变量完全一样,在一个程序中不同的函数其名字不能相同
-
有返回值,在函数名的前面加上返回值的类型说明
-
形式参数说明列表是用于调用函数和被调用函数之间进行数据传递
2.函数的调用
函数的调用方式
(1) 以函数调用语句形式调用
当函数不要求返回值,可有函数调用加上分号实现,函数调用作为一个独立的语句使用
hust();
(2)以函数表达式的一个运算对象形式调用
函数调用作为一个运算对象直接出现在一个表达式中
k=hust(m,n)*hust(i,j);
语句包含两个函数调用,每个函数调用都是表达式中的一个运算对象。因此,要求函数应带回一个确定的值参加表达式的运算,这种行如hust(m,n)*hust(i,j);
表达式称为函数表达式
(3)以函数调用中的一个实际参数形式调用
将函数调用放在另一个函数调用的实际参数列表中,以其值作为该函数调用的一个实参,传递给被调用的函数的形参
k=hust(hust(m,n),j);
printf("%d",power(a,b));
函数调用的实参允许是表达式的形式,故函数调用作为实参也是允许的
3.函数的返回值
函数调用的目的通常是为了得到一个函数值,利用返回语句(return)将计算结构返回给调用程序,也使程序的执行流程转到调用语句的下一语句去执行
格式 :
return (表达式);或return 表达式;
注意:
- 系统默认的返回值类型为整型
- 有返回值,凡是允许表达式出现的地方,都可以调用该函数
- 无返回值,返回值类型可以说明void型,其往往是以单独的调用语句出现,比如常见的printf函数就是这种形式
printf("Hello,world!")
4.函数传递形参
(1)值传递
这种方法,调用函数将实参(常数、变量、数组元素或计算的表达式)的值传递到被调用的函数形参设置的临时变量存储单元中,被调用函数形参值的改变对调用函数的实参无影响。调用结束后,形参储存单元被释放,实参仍保持原值不变,调用结束后,形参存储单元被释放
(2) 地址传递
在值传递中,不能将形参的值返回给实参,但实际运用中需要双向传递,当实参是数组名或指针型变量(实参地址) 时
1.若实参是数组名,则调用函数将实参数组的起始地址传递给被调用函数形参的临时变量单元 而不是传递实参数组的值。此时,相应的形参可以是形参数组名,也可以是是形参指针变量. 在这种传递方法下,被调用函数执行时,形参通过实参传递来的实参数组起始地址和小标增量,直接去存取相应的数组元素,故形参值的变化实际上是对调用函数实参数组元素值的改变。
2.若实参是指针变量或地址表达式,则调用函数将实参指针变量指向单元的地址或实参的地址传递给被调用参数的临时变量存储单元。此时,相应的形参必须是指针型变量,在被调用函数执行时,也是直接去访问相应的单元,形参的变化直接修改调用函数实参相应的单元
因此,当实参是数组名、指针变量或地址表达式时,实参与形间的传递是双向传递,称为“地址传递”
5.关于实例
可以参考如下文章
请点击文章内容 本人转载非自己撰写