#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\n",t2.str);
//除了内存设置函数memset(起始地址,设置值,长度)以外,还有一个内存拷贝函数,memcpy(目标地址,源地址,拷贝长度);
struct test t3;
memcpy(&t3, &t1, sizeof(t1));
printf("%s\n",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\n", 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){
}