次のようなコードがあるとします。
char *string;
void foo(char *s)
{
string = s;
}
foo("bar");
内部で何が起こっているのですか?foo に渡すものを明示的に宣言していないため、たとえば、次のようなことを行います。
char s[] = "bar";
foo(s);
「バー」は常に同じメモリ位置に保存されますか? 自動的にメモリが割り当てられますか? もしそうなら、このアドレスは同じままなので、「文字列」は常に「バー」を保持する文字配列を指しますか?
私が尋ねているより一般的な質問は次のとおりだと思います:最初に変数に明示的に代入せずに引数を関数に渡し、次にその変数を渡すと、内部的にどうなりますか。