C语言传输改变形参改变实参
时间: 2024-12-27 17:08:18 浏览: 6
在C语言中,并不像高级语言那样支持直接通过引用(如指针或引用)修改函数传入的形参。当你将变量作为函数参数传递时,实际上是复制了一个副本。因此,如果你在函数内部改变了这个副本的值,原函数外部的变量并不会受到影响。
例如:
```c
void change_arg(int x) {
x = 10; // 这里改变了x的副本,不影响原始变量
}
int main() {
int num = 5;
change_arg(num);
printf("num = %d\n", num); // 输出:num = 5,未变
return 0;
}
```
如果你想在函数内部修改原值,你可以使用指针,让函数接收指向变量地址的指针:
```c
void change_ptr_to_arg(int *x) {
*x = 10; // 现在我们修改的是指针所指向的实际位置
}
int main() {
int num = 5;
change_ptr_to_arg(&num);
printf("num = %d\n", num); // 输出:num = 10,已变
return 0;
}
```
在这种情况下,`change_ptr_to_arg`函数通过指针可以直接操作`main`函数中的`num`变量。
阅读全文