首页 > 代码库 > C语言基础07

C语言基础07

结构体与函数的不同就是函数是由相同数据类型的变量组成,结构中可以有不同数据类型组合。

struct 结构名称 {

  数据类型 成员;    // 注意必须是以分号隔开

  ...

//创建一个构造体

struct student {

  int age;

  char name[45];

  char gender;

  float score;

}

  // 创建结构变量并且为其赋值

struct student stu ={18,"luoshuai",‘m‘,87,5};        

但是:struct student stu1; stu1={18,"luoshuai",‘m‘,87,5}; 

//报错,如果在声明的时候,没有全部赋值,不可以放在后面进行全部赋值。

但是可以逐个的赋值

struct student stu1;

stu1.age =18;

// stu1.name= "lihuahua";   字符串数组 或者数组都不能相互之间直接赋值使用函数。

  strcpy(stu1.name,"luohuahua");

typedef   重新命名。可以简化系统的函数名称

typedef float ff;

ff score = 98.5;

//typedef和结构体组合使用,后面经常使用

typedef struct {

  int age;

  char name[30];

  char gender;

  float weight;

} Cat ;

 

// 结构体的嵌套

typedef struct{

  int year ;

  int mouth;

   int day;

} Birthday;

 

typedef struct{

  int age;

  char name[30];

  Birthday bir;

} People;

People p1 = {"jiesi",29847901093,{1990,6,12}};

printf("%d\n",p1.bir.year);

有一点我们需要注意,字符串数组或者数组都不能直接赋值给其他变量。但是结构体相互之间是可以的。所以如果你想交换数组,可以使用结构体。

typedef struct {

  int age;    4字节

  double score ; 8字节

  char gender;   1字节

  char name[20]; 20字节

} Student;

我们如何知道一个struct在内存占的空间呢?其实很简单,上面已经计算好了每个变量的内存字节占用,加起来就是33个

我们一最大的成员变量数据类型为单位,这里很明显就是Double的8字节,然后 8 * n >=  33 , n必去取值5.最终的内存占用5*8=40个字节。在面试中经常会遇到!

 

 

C语言基础07