首页 > 试题广场 >

下面C++程序的输出是_________。#include

[单选题]
下面C++程序的输出是_________。
#include <iostream>
using namespace std;
size_t get_size_1(int* arr) {
return sizeof(arr);
}
size_t get_size_2(int arr[]) {
return sizeof(arr);
}
size_t get_size_3(int (&arr)[10]) {
return sizeof(arr);
}
int main() {
int array[10];
cout << (sizeof(array) == get_size_1(array) ? 1 : 0);
cout << (sizeof(array) == get_size_2(array) ? 1 : 0);
cout << (sizeof(array) == get_size_3(array) ? 1 : 0);
}
  • 000
  • 001
  • 011
  • 111
这段C++程序的输出是001。以下是关键分析:

get_size_1(int* arr) 和 get_size_2(int arr[])
两个函数的参数本质都是指针。sizeof(arr) 返回指针的大小(例如64位系统中是8字节)。而主函数中 sizeof(array) 是整个数组的大小(10 * sizeof(int) = 40)。因此这两个比较结果为 0。

get_size_3(int (&arr)[10])
参数是数组的引用,保留了数组的类型信息。sizeof(arr) 返回整个数组的大小(40字节),与主函数的 sizeof(array) 相等。比较结果为 1。

综上,最终输出 001。
发表于 2025-02-26 02:00:44 回复(0)
形参不同形式代表的含义,数组一般情况下默认只传递指针
发表于 2025-06-13 09:20:20 回复(0)