C语言数组作为函数参数传递:传递的是地址吗?
是的,C语言中,数组作为函数参数传递时,实际上传递的是数组的地址。在函数内部,可以通过该地址访问和操作数组的元素。因此,对数组元素的修改在函数外部也是可见的。这与其他数据类型例如整数或浮点数不同,它们在传递时会进行值传递,函数内部操作的是原始值的副本,不会影响原始值。
例如,以下代码演示了数组作为参数传递时,函数内部修改数组元素会影响原始数组:
#include <stdio.h>
void modifyArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
arr[i] *= 2;
}
}
int main() {
int numbers[] = {1, 2, 3, 4, 5};
int size = sizeof(numbers) / sizeof(numbers[0]);
modifyArray(numbers, size);
for (int i = 0; i < size; i++) {
printf("%d ", numbers[i]);
}
printf("\n");
return 0;
}
这段代码中,modifyArray 函数接受一个整数数组 arr 和数组大小 size 作为参数。函数内部对 arr 中的元素进行操作,并将它们的值乘以 2。在 main 函数中,我们创建了一个数组 numbers,并将其传递给 modifyArray 函数。执行 modifyArray 函数后,numbers 数组中的元素都被修改了。
这种地址传递的方式,可以提高代码的效率,避免对整个数组进行复制,但同时也需要注意数据修改的影响。如果需要在函数内部修改数组元素,并且不希望修改原始数组,可以考虑在函数内部创建数组副本,或者使用指针传递。
原文地址: https://www.cveoy.top/t/topic/pF2a 著作权归作者所有。请勿转载和采集!