次のコード フラグメントがあります。
char tab[2][3] = {'1', '2', '\0', '3', '4', '\0'};
printf("%s\n", tab);
への呼び出しでエラー/警告が表示されない理由がわかりません警告は表示されますが、エラーは表示されず、プログラムは正常に実行されます。' ' が出力されますprintf
。12
。
printf
は 型の引数char *
、つまり へのポインタを期待していますchar
。したがって、 を宣言した場合char arr[3]
、arr
は を含むメモリ ユニットのアドレスであるchar
ため、それを使用して呼び出すと、 char へのポインタ、つまりにprintf
減衰します。
同様に、は3 文字の型配列を含むメモリ ユニットのアドレスであり、メモリ ユニットのアドレスには が含まれているため、に減衰し、問題になるはずです。char *
tab
char
tab
char **
printf
char *
.
誰かがこの問題を説明できますか?
補遺:
私が得る警告は次のとおりです。
a.c:6: warning: char format, different type arg (arg 2)