简单结构体
struct student{
char name[20]; //可以用scanf或者直接赋值
*如果用char *name 在用scanf时没有内存接收
long id;
int age;
float height;
};
结构体中只能声明变量不能赋初值。
struct student zhangsan;
struct student zhangsan = {"xiaowang",2000002,20,180.5};
结构体的访问用".":xiaowang.name
typedef
typedef struct student{
char name[20]; //不能用char *name 在用scanf时没有内存接收
long id;
int age;
float height;
}Student; // typedef给一个存在的类型取一个别名
Student zhangsan;
Student zhangsan = {"xiaowang",2000002,20,180.5};
如果不加typedef:
struct student{
char name[20]; //不能用char *name 在用scanf时没有内存接收
long id;
int age;
float height;
}Student;//Student 是一个变量了
结构体指针
Student *s;
如果*name是字符串 s->name = "xiaowang";
如果name[]是数组接收 strcpy(s->name,"xiaowang");
s->age = 23;
Student *s[5]; //每一块都存着结构体的地址
Student xw ={"xiaowang",2345,23,164.3};
s[0] =&xw; //结构体指针数组里面的每一个都存着地址,如果不给他内存地址,它的值就为空,不可直接赋值。
s[0]->age = 20;
结构体数组
Student array[5] ={};
strcpy(array[0].name,"xiaowang");
array[0].age = 23;