用指针代表数组作为函数形参有直接传递数组变量的区别,举个例子
时间: 2025-01-01 07:38:01 浏览: 19
当你将数组作为函数的形参时,有两种常见的处理方式:通过指针传递和通过引用传递。这里举例说明:
**1. 指针传递**:
```c++
void printArray(int* arr, int size) {
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
}
int main() {
int myArray[5] = {1, 2, 3, 4, 5};
printArray(myArray, sizeof(myArray) / sizeof(myArray[0])); // 直接传递的是数组首地址
return 0;
}
```
在这个例子中,`printArray`函数接收一个指向整型数组首元素的指针以及数组大小,而不是整个数组。这使得函数修改数组内容不会影响到`main`函数中的原始数组。
**2. 引用传递(如果支持)**:
```c++
// C++11及更高版本支持引用参数,但此处假设语言环境不支持
// void printArray(const std::array<int, 5>& arr); // 如果支持,可以类似这样传入数组引用
void printArray(int (&arr)[5]) { // C风格数组引用,C++中不常用
for (int i = 0; i < 5; i++) {
cout << arr[i] << " ";
}
}
int main() {
int myArray[5] = {1, 2, 3, 4, 5};
printArray(myArray);
return 0;
}
```
这里通过引用传递,实际上是复制了数组的一段内存地址,同样可以访问和修改数组内容。
**区别总结**:
- **指针**:传递的是数组的地址,改变指针所指向的内容会影响原数组;空间效率较高,因为不需要复制整个数组。
- **引用**:虽然也是间接传递,但本质上是数组的一个别名,不占用额外的空间,修改引用等同于修改原数组。
阅读全文