#include <stdio.h> /** 上一个版本的name是固定大小的,不好,这次换用 *name然后 采用 堆的方式申请内存,起到用到少拿多少的一个方式。 */ struct student{ int ID; char *name; int age; }; struct test{ char str[50]; }; void func1(void); void func2(void); int main(){ //func1(); struct test t1 = { "hello world" }; struct test t2; t2 = t1; printf("%s ",t2.str); //除了内存设置函数memset(起始地址,设置值,长度)以外,还有一个内存拷贝函数,memcpy(目标地址,源地址,拷贝长度); struct test t3; memcpy(&t3, &t1, sizeof(t1)); printf("%s ",t3.str); getchar(); return 0; } void func1(void){ struct student s1; s1.ID = 1; s1.name = malloc(sizeof(char)* 5); strcpy(s1.name, "李飞");//s1.namef本身就是一个地址,再取地址,成什么了!? s1.age = 24; printf("s1的学号是:%d,姓名:%s,年龄%d ", s1.ID, s1.name, s1.age); //使用之后记得释放。 free(s1.name); //通过一个指针链接到s1 struct student *ps; ps = &s1; ps->ID = 2; ps->name = malloc(sizeof(char)* 7); ps->age = 25; strcpy(ps->name, "letben"); printf("指向后s1的学号是:%d,姓名:%s,年龄%d", s1.ID, s1.name, s1.age); //再次忘记了释放内存。 free(ps->name); } void func2(void){ }