のためのメモリ割り当てと仮定し、次のコード:C構造体、ポインタおよびフィールド
struct c {
char* name;
};
int main(int argc, char *argv[]) {
struct c c1;
c1.name = "Ana";
printf ("%s\n",c1.name);
return 0;
}
私の最初の反応は、ヒープ上、または明示的なchar name[] = "Anna"
のいずれかによって、私はいくつかの領域を割り当てるために必要なことを考えるようになっているだろうしかし、上記の私の例はうまくいきます。コンパイラはその文字列をデータセグメントに格納してそれを指し示していますか?言い換えれば、そうすることですか?
struct c {
char* name = "Ana";
};
ありがとうございました。
実際に質問に答えるために+1 –
申し訳ありません、私はそれを得ると思います。これがあなたの「静的記憶期間」であることを明確にしたのは、実際にはコンパイル時にデータセグメントにあることを意味し、コンパイラはどこを指し示すのかを明確に知っています。ありがとう。 –