次のコード フラグメントがあります。
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 *tabchartabchar **printfchar *.
誰かがこの問題を説明できますか?
補遺:
私が得る警告は次のとおりです。
a.c:6: warning: char format, different type arg (arg 2)