在 C++ 中,数组作为函数参数有两种传递方式:传递指针和传递引用。
-
传递指针: 当将数组作为参数传递给函数时,实际上传递的是数组的首元素的地址。函数内部可以通过指针操作来访问整个数组。例如:
void foo(int* arr, int size) {
// 使用指针访问数组
for (int i = 0; i < size; ++i) {
cout << arr[i] << " ";
}
}int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
foo(arr, size);
return 0;
}
在上述示例中,foo()
函数接受一个int*
类型的指针参数arr
,表示数组的首地址。可以使用指针arr
访问整个数组。 -
传递引用: 可以使用引用作为函数参数来传递数组。这样做的好处是无需显式地指定数组大小,同时在函数内部可以直接使用数组名进行操作。例如:
void foo(int (&arr)[5]) {
// 使用引用访问数组
for (int i = 0; i < 5; ++i) {
cout << arr[i] << " ";
}
}int main() {
int arr[] = {1, 2, 3, 4, 5};
foo(arr);
return 0;
}在上述示例中,
foo()
函数接受一个引用参数arr
,表示数组。函数内部可以直接使用数组名arr
访问整个数组。
无论是传递指针还是传递引用,都可以在函数内部对数组进行修改,并且这些修改会影响到原始数组。但是需要注意的是,在使用指针或引用参数时,要确保传入的数组不为空,以避免出现空指针引用或越界访问等错误。