数组做函数参数的应用(地址传递和值传递)
时间: 2024-09-20 13:08:43 浏览: 54
数组作为函数参数有两种常见的方式:值传递和地址传递。在C语言中,默认情况下,当你将数组传递给函数时,实际上是传递了一个指向数组首元素的指针,这相当于值传递。
**值传递**:
- 当你在函数内部对数组进行操作时,不会影响原始数组。因为函数接收到的是复制的一个副本(尽管它实际上是一个指针)。
- 示例:
```c
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
}
int main() {
int numbers[] = {1, 2, 3, 4, 5};
printArray(numbers, 5); // 数组内容不变
return 0;
}
```
**地址传递**:
- 如果你想在函数内部修改数组的内容,可以显式地将数组名作为参数,这时实际上是传递了数组的地址(即指针),可以直接改变原数组。
- 示例:
```c
void changeArray(int *arr, int size) {
for (int i = 0; i < size; i++) {
arr[i] *= 2; // 直接修改传入数组
}
}
int main() {
int numbers[] = {1, 2, 3, 4, 5};
changeArray(numbers, 5);
for (int i = 0; i < 5; i++) {
printf("%d ", numbers[i]); // 输出:2 4 6 8 10
}
return 0;
}
```
在这两个示例中,数组作为参数时的区别在于是否能直接更改原始数组的内容。
阅读全文