You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何返回数组本身而非指向数组的指针?

问题描述

我知道如何返回指向数组首元素的指针,但想了解是否可以返回数组本身而非指向它的指针。就像通过引用传递数组的方式:

void print_arr(int (&arr)[3])
{
    for(size_t i = 0; i < 3; ++i)
        std::cout << arr[i] << ' ';
}

我原本尝试编写如下代码:

int(&)[3] func(int (&arr)[3])
{
    // some code...
    return arr;
}

但该代码无法运行。

解决方案

你写的返回类型语法有误,C++中返回数组引用的正确语法需要将函数名包含在括号里,避免数组下标运算符的优先级干扰。

写法1:标准语法

int (&func(int (&arr)[3]))[3]
{
    // 这里可以对arr做操作
    return arr;
}

写法2:用类型别名简化

为了让代码更易读,可以先给数组引用定义别名:

using IntArr3Ref = int(&)[3];

IntArr3Ref func(IntArr3Ref arr)
{
    return arr;
}

写法3:使用auto(C++14及以上)

如果编译器支持C++14,还可以用auto结合尾置返回类型:

auto func(int (&arr)[3]) -> int(&)[3]
{
    return arr;
}

写法4:用decltype(C++11及以上)

也可以借助decltype推导返回类型:

decltype(auto) func(int (&arr)[3])
{
    return arr;
}

这些写法都能正确返回数组的引用,本质是修正了返回类型的语法结构,让编译器正确识别你要返回的是一个长度为3的int数组的引用。

内容的提问来源于stack exchange,提问作者Kesto2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 10:43:13