我有以下代码:
typedef struct{
char *name;
int age;
} person;
int main(){
person Peter = {"peter", 19};
person Petercp = Peter;
Peter.name[0] = 'a';
Petercp.name = "hello";
printf("%s %d\n", Peter.name, Peter.age);
printf("%s %d\n", Petercp.name, Petercp.age);
}
编译器给了我该行的“BAD ACCESS”错误消息
Peter.name[0] = 'a'
但以下行似乎不错
Petercp.name = "hello";
似乎 person.name 的数组是一个指向常量的指针。我下结论对吗?
而且,如果我将结构内的数组声明为
char name[];
我再次被允许为
Peter.name[0] = 'a'
这是为什么?