假设以下代码:
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"
但我上面的示例有效。编译器是否只是将该字符串存储在 Data 段中并指向它?换句话说,这就像做一个
struct c {
char* name = "Ana";
};
谢谢。