将参数传递给方法时,初始化内联整数数组

initialize integer array inline when passing arguments to a method

本文关键字:整数 数组 初始化 参数传递 方法      更新时间:2023-10-16

是否可以在调用c++ (avr- c++)中的方法时内联初始化整数数组?

这是我尝试过的:

A({2, 4, 8, 3, 6});
void A(int* b) {
}

我得到了这个错误:

不能将"转换为"int*"参数'1'到'void A(int*)'不能将'1'到'void A(int*)'转换为'int*'

看着我以前的问题,我发现我现在实际上知道这个问题的答案了。是:

void A(int *b) {
}
void foo() {
    A((int[]){1,2,3});
}

不能使用原始指针。但是你可以在c++ 11中使用std::vector:

void A(std::vector<int> b) {
}
A({2, 4, 8, 3, 6}); // b.size() == 5

或者只是一个计算数组大小的函数模板:

template <size_t N>
void A(const int (&b)[N]) {
}