【发布时间】:2020-06-07 06:19:24
【问题描述】:
有没有办法在 C 中的方法调用中声明一个数组?
我目前有:
void printConcatLine(char chunks[][20]) {
for(int x = 0; x < sizeof(chunks); ++x) {
if(x < (sizeof(chunks) - 1)) {
Serial.print(chunks[x]);
} else {
Serial.println(chunks[x]);
}
}
}
char chunks[][20] = {
"{",
"255"
"}"
};
printConcatLine(chunks);
有没有办法在方法调用中声明数组,而不是事先在变量中声明它?
类似于:
printConcatLine(["{", "255", "}"]);
【问题讨论】:
-
请注意,
sizeof (chunks)无论您如何将其传递给函数都会评估指针的大小,即:chunks是一个指针(void printConcatLine(char chunks[][20]) {...}与void printConcatLine(char (*chunks)[20]) {...}相同)。 -
@McWayWeb
a method call in C?Serial.print强烈建议您在 arduino 环境中使用 C++。您可能刚刚发现,C++ 和 C 是不同的语言,在 C 中工作的东西并不意味着在 C++ 中也能工作。例如,下面的答案是完全有效的 C 代码,同时在 C++ 中不起作用。如果您缩进询问 C++,我建议在这里接受答案并针对 C++ 提出一个单独的问题(甚至复制问题,只需用 C++ 而不是 C 标记它)。
标签: c arrays multidimensional-array