Menu
CoddyTech

数组与函数

本课属于 Coddy C++ 学习旅程的“基础知识”单元。第 62 课,共 74 课。

不能将整个数组直接传递给函数。尝试将数组传递给函数时,它会“退化”为指向第一个元素的指针。

例如:

int numbers[5] = {1, 2, 3, 4, 5};
void processArray(int arr[]) {
	int size = std::size(arr);
}

这里的 std::size(arr) 无法编译,因为 arr 实际上是一个指针,而不是数组,并且指针不会存储数组的大小。你将在下一门课程中学习指针。

这就是为什么将数组传递给函数时,我们通常需要将大小作为单独的参数传递:

void processArray(int arr[], int size) {
    // 现在我们可以用 size 参数安全地处理数组了
}

下面是调用函数的方法:

int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);

此外,也不能在函数中返回数组:

int[] processArray(int arr[]) {
	return arr;
}

这是不合法的。你应该改用 * 语法:

int* processArray(int arr[]) {
	return arr;
}
int* newArr = processArray(arr);

星号 (*) 语法指的是指针,我们将在下一门课程中讨论它们。

亲手试试

这节课没有代码挑战。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: C++ 在线编译器