このコードを実行すると、正常に動作string constant
し、画面に出力されます。
char *someFun(){
char *temp = "string constant";
return temp;
}
int main(){
puts(someFun());
}
しかし、次の同様のコードを実行すると、機能せず、画面にゴミが表示されます。
char *someFun1(){
char temp[ ] = "string";
return temp;
}
int main(){
puts(someFun1());
}
その背後にある理由は何ですか?基本的に、どちらの関数も同じことを行います (つまり、「文字列」を返します) が、動作は異なります。何故ですか?