8

次のコードがあるとします。

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";
};

ありがとう。

4

2 に答える 2