12月11号 结构体 + typedef

简单结构体

struct student{

  char name[20];   //可以用scanf或者直接赋值    

    *如果用char *name  在用scanf时没有内存接收

  long id;

  int age;

  float height;

};

结构体中只能声明变量不能赋初值。

struck student zhangsan;

struck 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;//Student是一个类型

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;

原文地址:https://www.cnblogs.com/hmzxwky/p/5042658.html