我知道char **
vsconst char **
的事情(如c faq中所述),但我看不到任何使用指向数组的指针这样做会导致数组本身的某些内容被实际修改的情况。
我的代码:
void fun(const char (*p)[6])
{
printf("%s", p[0]);
}
int main(int argc, char *argv[])
{
char a[6] = "hello";
char (*c)[6];
c = &a;
fun(c);
}
使用 gcc 编译时给出以下输出:
test.c:17:9: warning: passing argument 1 of 'fun' from incompatible pointer type
test.c:5:10: note: expected 'const char (*)[6]' but argument is of type 'char (*)[6]'
这里的问题在某种程度上是相关的,但到目前为止还没有答案。是否只是编译器偏执,摆脱警告的唯一方法是显式强制转换?还是真的有可能出问题?