char **
vsについては知っていますが ( c faqconst char **
で説明されているように)、配列へのポインターを使用してこれを行うと、配列自体の内容が実際に変更されるというシナリオは見当たりません。
私のコード:
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]'
ここでの質問は何らかの形で関連していますが、これまでのところ回答がありません。コンパイラがパラノイアになっているだけで、警告を取り除く唯一の方法は明示的にキャストすることですか? それとも、何かがうまくいかない可能性は本当にありますか?