私は本当にこれについて助けが必要です.C.Longの私の基盤を揺るがしました.詳細な回答は非常に高く評価されます.私は私の質問を2つの部分に分けました.
A:従来と同じようにprintf("%s",(char[]){'H','i','\0'});
動作して出力するのはなぜですか?C コードのどこでも代用として使用できますか?それらは同じ意味ですか?つまり、C で記述する場合、通常、メモリ内のどこかに格納されていることを意味します。それへのポインターが渡されます。一見醜いものについても同じことが言えますか?それらはまったく同じですか?Hi
printf("%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の非常に基本的なことをまだ理解していないように感じます.非常に失望しています.ありがとう!!