我正在尝试制作一个将某些数据读入二维数组的程序。为了测试我已经制作了这个小例子程序的功能。该变量当前被声明为固定的二维数组,并包含一些布尔数据。
boolean runData[4][20] = {
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
};
现在,我有一个我必须传递此数据的函数,该函数将一维布尔数组作为参数:
void fireLEDs(boolean states[20]){
...
}
所以这意味着我必须将这些数据分成4个单维数组,并将每个数据传递给fireLEDs函数。
我正在尝试执行此操作的代码是:
for(int b=0;b<4;b++){
fireLEDs(runData[b][]);
delayMicroseconds(divDelay);
}
然而,这不起作用。
我对C不太好,所以这样的功能可能根本就不存在,但有些google-fu说这应该有效。
作为一个注释:我正在使用arduino编译器,但这个问题与我的想法没什么关系。
答案 0 :(得分:0)
我可以看到,你应该改变
fireLEDs(runData[b][]);
到
fireLEDs(runData[b]);
答案 1 :(得分:0)
如果你不想在函数中使用像20这样的幻数,那么该函数应该被声明为
void fireLEDs( boolean states[], size_t n );
要正确调用此函数,您应该编写例如
for ( size_t i = 0; i < sizeof( runData ) / sizeof( *runData ); i++ )
{
fireLEDs( runData[i], sizeof( runData[i] ) / sizeof( *runData[i] ) );
}