私は本当にこれについて助けが必要です.C.Longの私の基盤を揺るがしました.詳細な回答は非常に高く評価されます.私は私の質問を2つの部分に分けました.
A:従来と同じようにprintf("%s",(char[]){'H','i','\0'});動作して出力するのはなぜですか?C コードのどこでも代用として使用できますか?それらは同じ意味ですか?つまり、C で記述する場合、通常、メモリ内のどこかに格納されていることを意味します。それへのポインターが渡されます。一見醜いものについても同じことが言えますか?それらはまったく同じですか?Hiprintf("%s","Hi");(char[]){'H','i','\0'}"Hi""Hi"Hi(char[]){'H','i','\0'}
B:printf("%s",(char[]){'H','i','\0'})正常に動作する場合と同様に、警告にもかかわらず実行すると、大きな失敗やセグメンテーション違反が発生するのprintf("%s","Hi")はなぜですか? Cでは、関数の引数で渡すときのように、に分解することは想定されてprintf("%s",(char*){'A','B','\0'}いないので、私はただ驚いています。と同じ関数?なぜ結果はここで同じではないのですか?char[]char*char*char demo[]char demo*
これについて私を助けてください.CIの非常に基本的なことをまだ理解していないように感じます.非常に失望しています.ありがとう!!