数组作为操作数的语法
Syntax for arrays as operands
传递未在函数中预定义的数组作为操作数的语法是什么?
例如,我有这样一个函数:
void kilos(int percentage[2], char liquid[2][4]);
因此,如果我创建两个不同的数组并将它们作为操作数传递,一切都可以正常工作。如果我不想在函数调用之前创建数组,该如何工作?唯一的解决方案是分析操作数,而不是使用数组?
我想调用这个函数,但是我想在调用这个函数的时候把数组变成这样:
kilos(int percent[2]={40,60}, char liq[2][4]={'wate','milk'})
在c++中,如果你有一个支持c++ 11的编译器,并且你使用std::vector
而不是原始数组,你可以使用初始化列表:
void kilos(const std::vector<int> percentage,
const std::vector<std::string> liquid);
// ...
kilos({40, 60}, {"water", "milk"});
向函数传递指针相当于传递数组。该指针可以指向静态分配的缓冲区,也可以指向动态内存(例如new []
或malloc
)。
您需要像这样调用函数:
kilos((int[2]){40,60}, (char[2][4]){"wate", "milk"});
注意字符串字面量周围的双引号。您可能需要第二个数组为char[2][5]
以允许空终止符。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 助记符和指向成员语法的指针
- 有人能分解一下这个c++模板的语法吗
- C++避免重复声明的语法是什么
- QMetaObject invokeMethod的基于函数指针的语法
- 控制允许动态运行c++的并发操作数
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 单独定义模板化嵌套类方法的正确语法
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 错误 C2679:二进制"<<":未找到采用类型 'std::string_view' 的右侧操作数的运算符(或者没有可接受的转换)
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- C++ 带有向量的 IF 计算操作数
- 是否所有C++运算符都接受操作数?
- 为什么我会收到错误 C2143 语法错误:缺少"*"之前的';'?
- 一元*运算符的操作数是否期望一个 prvalue
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- 如何使用 Boost Spirit x3 编写具有两个后操作数语法的二进制运算符?
- 数组作为操作数的语法