我正在使用Microsoft Visual Studio Express 2013,尝试做出这样的事情......代码实际上已经解决了,但仍然存在错误,代码为C4047:'char *' differs in levels of indirection from 'char[24][50]'
是这样吗?
忽略该警告,该程序按我预期的方式工作,没有任何问题。我只是想了解并了解背后发生的事情。 (陈旧)警告表示我在函数中传递多维数组的行。这是该函数的参数行:
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] = { ... };
真的是什么问题?据我所知,多维数组不是数组数组(它有多个间接级别),而只是一个数组(具有单级间接)。
答案 0 :(得分:2)
如果要将二维数组传递给函数:
int labels[NROWS][NCOLUMNS];
f(labels);
函数的声明必须匹配:
void f(int labels[][NCOLUMNS])
{ ... }
或
void f(int (*ap)[NCOLUMNS]) /* ap is a pointer to an array */
{ ... }