C语言函数参数教程
在 C 语言中,函数的形参可以没有,也可以有任意多个,同时,在 C 语言中,如果我们省略函数参数那么表示可以传入任意的函数参数,因此,如果我们不想要函数参数,最好使用
C语言函数参数详解
语法
type funcName(paramType1 param1, paramType2 param2){
// 执行语句...
return val
}
参数
参数
描述
type
函数的返回值类型,如果没有任何返回值,则写 void,不可以死省略不写。
funcName
函数名。
paramType1
函数参数 param1 的类型
param1
函数参数
return
可选,函数返回值使用的关键字。
val
函数需要具体返回的值。
说明
我们定义了一个函数 funcName,该返回的返回值类型是 type,如果没有返回值,则写 void。
该函数有两个参数,分别为 paramType1 类型的参数 param1 和 paramType2 类型的参数 param2,函数的返回值为 val。
案例
寻找最大数
用函数,实现寻找两个数的最大公约数
#include
int gcdNormal(int x, int y){
int n = 0;
if (x > y)
{
n = y;
}
else
{
n = x;
}
int i = 0;
for(i = n; i >= 1; i--)
{
if (x % i == 0 && y % i == 0)
{
return i;
}
}
return 1;
}
int main(){
printf("嗨客网(www.haicoder.net)\n\n");
int gcd = gcdNormal(10, 20);
printf("Gcd = %d\n", gcd);
return 0;
}
程序运行后,控制台输出如下:
我们定义了一个函数 gcdNormal,传入两个
函数参数是形参
C 语言的函数参数是函数参数,对函数参数的修改不会影响实参
#include
void change(int x){
x += 100;
}
int main(){
printf("嗨客网(www.haicoder.net)\n\n");
int x = 10;
change(x);
printf("X = %d\n", x);
return 0;
}
程序运行后,控制台输出如下:
我们定义了一个函数 change(),传入一个 int 类型的参数 a,在函数体中,对该函数的参数实现加 100 的操作。
最后,调用该函数,并传入变量 a,执行完 change() 函数之后,我们再次打印变量 a 的值,发现 a 的值还是 10,并不是加 100 之后的 110。
因为在 C 语言中,函数的参数是形式参数,即是实参的拷贝,所以修改的不是实参,所以 a 的值不会改变。
函数参数任意传递
如果函数的声明中没有写任何参数,那么可以传递任意参数
#include
void printInfo(){
printf("Hello HaiCoder\n\n");
}
int main(int argc, char **argv){
printf("嗨客网(www.haicoder.net)\n\n");
printInfo();
printInfo("HaiCoder");
}
程序运行后,控制台输出如下:
我们定义了一个函数 printInfo,该函数没有任何的参数,我们第一次调用该函数时,没有传入任何参数,第二次调用时,传入了一个参数。
我们看到,两次调用该函数,程序都没有报错,因为,在 C 语言中,函数定义的参数列表没有任何参数,表明可以传入任何参数。现在,我们将程序修改如下:
#include
void printInfo(void)
{
printf("Hello HaiCoder\n\n");
}
int main(int argc, char **argv)
{
printf("嗨客网(www.haicoder.net)\n\n");
printInfo();
printInfo("HaiCoder");
}
程序运行后,控制台输出如下:
我们使用 void 修饰了函数的参数,此时,再次运行程序,我们发现,当我们传入参数时,程序报错,因此,如果函数不接受任何参数,最好使用 void 修饰。
C语言函数参数总结
C 语言中函数的参数,为形式参数,即如果我们通过传值的方式,传递的参数其实是实际参数的一份拷贝,而不是真正的实际参数。
在 C 语言中,函数的形参可以没有,也可以有任意多个,同时,在 C 语言中,如果我们省略函数参数那么表示可以传入任意的函数参数,因此,如果我们不想要函数参数,最好使用 void。