-1

我正在使用 Microsoft Visual Studio Express 2013,试图做一些事情......代码实际上可以运行,但仍然存在错误,代码为 C4047:'char *' differs in levels of indirection from 'char[24][50]'

是这样吗?

无视警告,该程序按我预期的方式运行,没有问题。我只是想了解和了解背后发生的事情。(stale) 警告表示我在函数中传递多维数组的行。这是该函数的参数行:

void mass_assigner(
    WORD * translations,
    char * labels,
    char * PermBannedKeys,
    char * TempBannedKeys,
    char * Cooldowns
)
{ ... }

这就是我如何称呼它main

...
mass_assigner(
    translations,
    labels,
    PermBannedKeys,
    TempBannedKeys,
    Cooldowns
);
...

labels在哪里char labels[24][50] = { ... };

真正的问题是什么?据我所知,多维数组不是数组数组(具有多级间接),而只是一个数组(具有单级间接)。

4

1 回答 1

2

如果要将二维数组传递给函数:

int labels[NROWS][NCOLUMNS];
f(labels);

函数的声明必须匹配:

void f(int labels[][NCOLUMNS])
{ ... }

或者

void f(int (*ap)[NCOLUMNS]) /* ap is a pointer to an array */
{ ... }
于 2014-02-05T14:07:01.897 回答