一、参数传递
在C语言中,函数的参数传递可以通过值传递或引用传递来实现。默认情况下,C语言使用值传递,即将参数的值传递给函数。这意味着函数内部对参数的修改不会影响到函数外部的变量。
void changeValue(int x) {
x = 10;
}
int main() {
int num = 5;
changeValue(num);
printf("%d\n", num); // 输出结果为5,因为函数内部对参数的修改不会影响到函数外部的变量
return 0;
}
如果想要函数内部对参数的修改影响到函数外部的变量,可以通过指针或 引用传递来实现。
void changeValue(int *x) {
*x = 10;
}
int main() {
int num = 5;
changeValue(&num);
printf("%d\n", num); // 输出结果为10,因为函数内部通过指针修改了函数外部变量的值
return 0;
}
二、返回值
函数可以返回一个值,也可以不返回任何值。如果函数不返回值,则返回类型为 void(无类型)
。
int add(int a, int b) {
return a + b;
}
void sayHello() {
printf("Hello, world!\n");
}
三、递归调用
递归是指一个函数调用自身的过程。递归函数在解决某些问题时非常有用,比如计算阶乘、斐波那契数列等。
int factorial(int n) {
if (n == 0 || n == 1)
return 1;
else
return n * factorial(n - 1);
}
四、作用域和生命周期
变量的作用域指的是变量在程序中可见的范围,而生命周期指的是变量存在的时间段。
globalVar
是一个全局变量,它在整个程序中都可见。而 localVar
是一个局部变量,它只在 func
函数内部可见。
int globalVar = 10; // 全局变量
void func() {
int localVar = 20; // 局部变量
printf("局部变量:%d\n", localVar);
}
int main() {
printf("全局变量:%d\n", globalVar);
func();
return 0;
}