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

C++中如何直接传值为函数参数?能否编写接受初始化列表的函数?

C++直接传初始化列表作为参数的问题解答

问题1:调用函数时直接指定值作为参数,无需传入数组名或数组指针

有几种实用的实现方式,均基于C++11及以后的标准:

  • 使用**std::initializer_list**:这是C++专门为初始化列表场景设计的类型,函数参数声明为该类型后,调用时直接传入{1,2,3}这类值列表即可。示例代码:
#include <initializer_list>
#include <iostream>

void printNumbers(std::initializer_list<int> nums) {
    for (int num : nums) {
        std::cout << num << " ";
    }
}

int main() {
    printNumbers({1, 2, 3, 4}); // 直接传值列表,无需预先定义数组
    return 0;
}
  • 使用模板化数组引用:如果需要严格的固定大小数组类型,可以通过模板自动推导数组长度,同样能直接接收初始化列表:
#include <iostream>

template <size_t Size>
void printArray(const int (&arr)[Size]) {
    for (size_t i = 0; i < Size; ++i) {
        std::cout << arr[i] << " ";
    }
}

int main() {
    printArray({1, 2, 3}); // 模板自动推导出数组大小为3
    return 0;
}

问题2:能否编写函数接收{1,2,3}这类初始化列表作为数组参数

完全可以,上面两种方法都能实现。另外C++17及以上版本还可以用**std::span**,它的灵活性更强,既能接收初始化列表,也能兼容普通数组、动态数组甚至指针加长度的组合:

#include <span>
#include <iostream>

void processData(std::span<int> data) {
    for (int val : data) {
        std::cout << val << " ";
    }
}

int main() {
    processData({1, 2, 3}); // 直接传入初始化列表
    return 0;
}

如果使用的是C++03这类老旧标准,则无法直接传初始化列表,必须先声明数组再传入数组名,但现在这种场景已经极少出现。

内容的提问来源于stack exchange,提问作者Zombies are Real

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:40:46