MST

星途 面试题库

面试题:C++中数组作为函数实参时的类型转换基础

在C++ 中,当一个数组作为函数实参传递时,它会发生怎样的类型转换?请举例说明如何在函数中接收这种转换后的参数,并计算数组元素的总和。
17.8万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

在C++中,当一个数组作为函数实参传递时,它会退化为指向其首元素的指针。

以下是示例代码:

#include <iostream>

// 函数声明,参数为指向int的指针和数组元素个数
int sumArray(int* arr, int size) {
    int sum = 0;
    for (int i = 0; i < size; ++i) {
        sum += arr[i];
    }
    return sum;
}

int main() {
    int myArray[] = {1, 2, 3, 4, 5};
    int size = sizeof(myArray) / sizeof(myArray[0]);

    // 调用函数,传递数组名(退化为指针)和数组大小
    int result = sumArray(myArray, size);

    std::cout << "数组元素总和为: " << result << std::endl;

    return 0;
}

在上述代码中,sumArray函数接收一个int*类型的指针(即数组退化为的指针)和数组元素个数size。在函数内部通过遍历指针所指向的元素来计算总和。在main函数中,定义了一个数组myArray,并调用sumArray函数传递数组名(此时数组退化为指向首元素的指针)和数组大小,最后输出数组元素的总和。