1:数组名本质就是一个有限定的指针指向第一个元素。
在 C++ 中,当您将数组作为函数参数传递时,数组名通常会自动转换为指向数组首元素的指针。这意味着在函数调用时,数组名会被转换为指向第一个元素的指针,而不是整个数组的复制。这种行为与地址传递类似,因为它传递的是指向数组首元素的指针,而不是整个数组。
#include <iostream>
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << std::endl;
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
printArray(arr, size);
return 0;
}
在这个例子中,printArray
函数接受一个整型数组 arr
和它的大小 size
作为参数。在函数内部,我们使用指针 arr
访问数组的每个元素。这里,数组 arr
被转换为指向数组首元素的指针,因此我们可以使用指针运算符 []
访问数组元素。
请注意,这种行为仅适用于数组作为函数参数的情况。在其他情况下,数组名可能不会自动转换为指针。例如,当您使用 sizeof
运算符计算数组大小时,数组名不会自动转换为指针,因此您需要使用 sizeof(arr) / sizeof(arr[0])
来计算数组的大小