次のコードがあるとします。
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";
};
ありがとう。