1. 函数定义的几个关键要素详解:
1)函数名:函数的标识。
2)类型名:函数的类型,即函数的返回值类型。
3)参数列表:指函数需要的用于计算的数据。
4)函数返回值:返回值必须与函数函数类型匹配。对于void型函数,可以没有返回值或直接写return;
5)函数体:函数的执行代码逻辑。
2. 函数传参
函数之间的参数传递方式有:复制传递方式,地址传递方式
1)复制传递方式
把实参的值赋给被调函数中的形参。在被调函数中改变形参的值不影响实参的值,因为这两者属于不同的变量。
利用复制传递方式的函数这里不必举例。下面请看这个函数:
voidswap(int x,int y)
{
int temp;
temp = x;
x = y;
y = temp;
return;
}
int main()
{
int a=5,b=3;
swap(a,b);
printf("a是%d\nb是%d\n",a,b);
return 0;
}
输出结果:a是5,b是3
因为swap函数中的形参只是复制实参中的值,这两者属于不同的变量,所以这里的swap函数完成不了两个变量交换值的功能。
2)地址传递方式
一开始还是把实参的值赋给被调函数中的形参,只不过这不是普通的参数,而是变量的地址,在C语言中对地址中的值进行操作就是对变量本身操作。如果我们用值传递改写swap函数,效果如下:
voidswap(int *x,int *y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
return;
}
int main()
{
int a=5,b=3;
swap(&a,&b);
printf("a是%d\nb是%d\n",a,b);
return 0;
}
输出结果:a是3,b是5
main函数中的swap函数传递的实参是&a,&b即a的地址,b的地址,swap中的形参x, y就分别拿到了a的地址,b的地址,所以swap函数对*x ,*y操作,就是直接对main函数中的a变量和b变量操作。