Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 填充传递到函数中的二维数组_C++_C - Fatal编程技术网

C++ 填充传递到函数中的二维数组

C++ 填充传递到函数中的二维数组,c++,c,C++,C,我试图填充一个二维数组,我把它传递给一个函数,但我无法让它工作。这是我的密码: #define ROW 3 #define COLUMN 3 #define EMPTYFIELD ' ' void fillField( char** data, int row, int column ); int main( void ) { // Two dimensional array char field[ROW][COLUMN]; fillField( field,

我试图填充一个二维数组,我把它传递给一个函数,但我无法让它工作。这是我的密码:

#define ROW    3
#define COLUMN 3
#define EMPTYFIELD ' '

void fillField( char** data, int row, int column );

int main( void )
{
    // Two dimensional array
    char field[ROW][COLUMN];
    fillField( field, ROW, COLUMN );
    return( 0 );
}

void fillField( char** data, int row, int column )
{
    for( int r = 0; r < row; r++ )
    {
        for( int c = 0; c < column; c++ )
        {
            *data = EMPTYFIELD;
            data++;
        }
    }
}
我怎样才能解决这个问题?我将感谢任何帮助!提前谢谢

char **data;
双指针不是2D数组吗

void fillField(char data[][3],int row,int column);

因为传递的参数
字段
是一个2D数组而不是指针。

您需要取消对
数据的引用两次。这将解决您的问题:

for( int r = 0; r < row; r++ )
{
    for( int c = 0; c < column; c++ )
    {
        data[r][c] = EMPTYFIELD;
    }
}
for(int r=0;r

但是,正如其他答案所说的,用<代码> **<代码>传递二维数组是个坏主意。

实际上这是C++,但我将它编译成C++程序,因为我可以在FROLCAR中初始化变量。基于动态堆栈的数组在标准C++中是不可用的。为什么不使用
-std=c99
选项在
c99
模式下编译它,该模式允许在
中为
循环声明变量,您可以删除
参数。@Jarod42抱歉,没有告诉您错误是因为将2D数组传递给双指针,所以我在回答中提到,您是说原型中的参数
不是必需的吗?是的,我说列参数是多余的。@Jarod42 Yes只是将它保持在那里,以便与OP的函数原型同步。我很可能会去掉参数行和列,因为它们已经存在于
#define
中,可以在函数内部使用
for( int r = 0; r < row; r++ )
{
    for( int c = 0; c < column; c++ )
    {
        data[r][c] = EMPTYFIELD;
    }
}