对于C语言,当你传递一个参数给函数的时候,如果你想让参数被函数改动,则需要传递这个参数的指针给函数。如果你不想让参数被函数改动,那么就传递这个参数的值给参数。
在C语言中,可以通过传递参数的指针给函数,或者传递参数的值给函数来实现不同的效果。
1. 传递参数的指针给函数:
当你传递参数的指针给函数时,函数可以直接修改指针所指向的变量的值,因为指针可以提供变量的内存地址。这样的修改是在原始变量上进行的,因此会影响到函数外部的变量。
举例:
#include <stdio.h>
// 通过指针修改变量的值
void increment(int* num) {
(*num)++;
}
int main() {
int num = 5;
printf("初始值:%d\n", num);
increment(&num); // 传递指针给函数
printf("修改后的值:%d\n", num);
return 0;
}
输出:
初始值:5
修改后的值:6
在上述例子中,通过传递指针给函数,我们可以修改num
的值并在函数外部进行访问。
2. 传递参数的值给函数:
当你传递参数的值给函数时,函数会在栈上创建一个新的变量,并将传递的值复制到新的变量上。这意味着在函数内部对该参数进行修改不会影响到原始变量。
举例:
#include <stdio.h>
// 修改参数的值,不影响原始变量
void increment(int num) {
num++;
printf("函数内部的值:%d\n", num);
}
int main() {
int num = 5;
printf("初始值:%d\n", num);
increment(num); // 传递值给函数
printf("函数外部的值:%d\n", num);
return 0;
}
输出:
初始值:5
函数内部的值:6
函数外部的值:5
在上述例子中,尽管在函数内部修改了num
的值,但在函数外部的num
保持不变。这是因为函数内部操作的是复制的值,而不是原始变量本身。