c语言 函数修改传入的数组
时间: 2024-10-13 11:07:23 浏览: 46
C语言中二维数组作为函数参数来传递的三种方法
5星 · 资源好评率100%
在C语言中,函数通常不能直接修改传入的数组,因为函数内部看到的是数组的副本,而不是原始数组本身。如果你想让函数改变原数组的内容,你需要通过指针来操作。当函数接受数组名作为参数时,实际上接收的是数组首元素的地址。
例如:
```c
void modify_array(int *arr, int size) {
for (int i = 0; i < size; i++) {
arr[i] *= 2; // 这里实际上是修改了arr指向的内存位置
}
}
int main() {
int array[] = {1, 2, 3, 4, 5};
int array_size = sizeof(array) / sizeof(array[0]);
modify_array(array, array_size);
// 输出修改后的数组
for (int i = 0; i < array_size; i++) {
printf("%d ", array[i]); // 会打印出1, 4, 6, 8, 10
}
return 0;
}
```
在这个例子中,`modify_array`函数通过指针`arr`改变了数组的内容。但是请注意,如果函数在没有拥有足够权限的情况下修改了数据,可能会导致不可预期的结果。此外,如果函数被声明为`const`,那么它就不能修改指针所指向的数据。
阅读全文