【发布时间】:2018-10-15 05:55:58
【问题描述】:
我想使用双指针传递一个 2D 常量数组,但我得到一个编译器错误。
const unsigned char sizex=2;
const unsigned char sizey=5;
const unsigned char arr[sizex][sizey] ={
{1,2,3,4,5},
{6,7,8,9,10}};
void foo (const unsigned char **a, const unsigned char x, const unsigned char y) {
int i,j;
for(i=0;i<x;i++) {
for(j=0;j<y;j++) {
Serial.println(a[i][j]);
}
}
}
void main() {
foo(arr,sizex,sizey);
}
错误
无法将 'const unsigned char (*)[5]' 转换为 'const unsigned char**' 对于参数 '1' 到 'void foo(const unsigned char**, unsigned char, 无符号字符)'
void foo (const unsigned char a,[][5] const unsigned char x, const unsigned char y) 有效,但我不想将 [5] 硬编码到代码中。
有什么建议可以解决这个问题吗?
【问题讨论】:
-
数组数组不与指向指针的指针相同。参见例如this old answer of mine 解释原因。
-
谢谢。那么我的问题是如何在不明确指定大小的情况下传递数组数组?
标签: c++ arrays multidimensional-array constants