c语言函数改变传参值
时间: 2024-10-12 14:12:50 浏览: 30
C语言中传值与传指针的介绍与区别
在C语言中,当你传递变量作为函数参数时,默认是按值传递(pass by value)。这意味着函数内部对参数的修改不会影响原始变量。然而,对于某些基本数据类型(如整型、浮点型等),这种复制实际上是浅拷贝,修改副本并不会直接影响原值。但对于结构体或数组,即使它们是通过引用传递的(即间接地通过其地址传递),函数内部对结构体成员或数组元素的修改仍然是在副本上操作,原始值不会变。
如果你想在函数内部修改实参的值,你需要使用指针或通过引用传递。这样函数就能直接访问并修改指针所指向的数据:
```c
void changeValue(int* ptr) { // 使用指针接收整数
*ptr = 100; // 直接修改指针指向的值
}
void changeArray(int arr[], size_t len) { // 或者使用引用传递数组
for (size_t i = 0; i < len; ++i)
arr[i] = 200; // 修改数组内容
}
// 调用时
int num = 5;
changeValue(&num); // 修改num的值
int array[] = {1, 2, 3};
changeArray(array, sizeof(array)/sizeof(array[0])); // 修改数组
```
阅读全文