私はこれが安全であることを理解...functionからstring literalを割り当てられたconst char *を返すのは安全ですか?これは
const char *get_str_literal() {
return "I literally can't even";
}
しかし、ありますか?
const char *get_str_literal() {
const char *str = "I literally can't even";
return str;
}
そうでない場合、なぜですか?
を編集します。上記の2番目のコードスニペットとの違いは次のとおりです。
const char *get_str_literal() {
const char str[] = "I literally can't even";
return str;
}
文字列リテラルの内容が自動配列記憶域にコピーされますか?何が起こるのですか? 2番目の例で
これらは同じですが、コンパイラはおそらく同じコードを生成します –
これらはどちらも問題ありません。あなたが比較しなければならないものは 'const char str [] ="私は文字通りにはできません ";' –
@DavidBowlingこれは実際に私が約質問していたものでした。私は配列とポインタがしばしば振る舞いで重なっていることを理解していますが、これは配列(つまり 'const char str []')をポインタに代入すると問題が生じる状況でしょうか?アレイの割り当ては自動ストレージですか? – kylemart