次のコードがあります。
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'
何故ですか?