为了判断直接用结构体的一个值是否可以将另一个结构体的每一个元素直接复制过来使用而写了下列代码进行测试判断:
typedef struct Person {
int age;
char *name;
Person *person;
} Person;
int main(void) {
Person person1 = {10, (char *)"wang", NULL};
Person person4 = {15, (char *)"Li", NULL};
Person person5 = {30, (char *)"Liaa", NULL};
Person person2;
person1.person = &person4;
person2 = person1;
printf("ok\r\n");
printf("%d,%s\r\n", person1.age, person1.name);
printf("%d,%s\r\n" , person1.person->age, person1.person->name);
printf("%d,%s\r\n", person2.age, person2.name);
printf("%d,%s\r\n" , person2.person->age, person2.person->name);
person1.person = &person5;
person2 = person1;
printf("%d,%s\r\n", person1.age, person1.name);
printf("%d,%s\r\n" , person1.person->age, person1.person->name);
printf("%d,%s\r\n", person2.age, person2.name);
printf("%d,%s\r\n" , person2.person->age, person2.person->name);
return 0 ;
}
最终的测试结果过也是正确的:
但是呢在此期间,我使用了:
printf("%d,%s,%d,%s\r\n", person1.age, person1.name, person1.person->age, person1.person->name);
导致程序崩溃。具体原因还没有查资料,但很有可能是跟打印%s有关。