项目十结构体与共用体的基本应用

结构体与共用体的概述

在C语言中,构造类型是把多个数据结合在一起,并将每个数据称作为构造类型的”成员“。

数组就是构造类型中的一种,由多个相同数据类型的"成员"组成.。结构体和共用体可以由多个不同数据类型的“成员”组成。

共同体类型同结构体类型一样,属于构造类型,也称联合体,定义方法都相同

共同体类型同结构体类型之间的区别

  • 结构体的各个成员会占用不同的内存,互相之间没有影响;
  • 共用体的所有成员占有同一段内存,修改一个成员会影响其余成员;
  • 结构体占用的内存大于等于所有成员占有的内存的总和;
  • 共用体占用的内存等于最长的成员占用的内存;
  • 共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果给新的成员赋值,就会把原来成员的值覆盖掉

结构体

  1. 结构体类型的定义

在定义之前,需要先定义结构体类型,再次定义该结构体类型的变量

  • 结构体类型定义的一般形式:
struct 结构体类型名称 {
    成员类型1 成员名1;
    成员类型2 成员名2;
    ...
    成员类型n 成员名n;
};
 

其中,Struct是关键字,结构体类型名称的命名规则满足标识符命名规则,用于标识该结构体类型。成员类型可以是任意的数据类型,包括基本类型、指针类型、数组类型、结构体类型等。成员名是该成员在结构体中的名称。

例如,定义一个学生信息的结构体:

struct Student {
    int id;            // 学号
    char name[20];     // 姓名
    int age;           // 年龄
    float score;       // 成绩
};
 

这里,Student是一个结构体标识符,id、name、age和score是该结构体的四个成员,分别表示学生的学号、姓名、年龄和成绩。

  • 类型定义的一般形式
typedef 已有类型 新类型名;
 

其中,已有类型可以是任意的数据类型,如intfloatcharstruct等,新类型名是你自己定义的一个新类型名,可以是任意合法的标识符。

例如,定义一个int型别名my_int

typedef int my_int;
 

这样,我们就可以使用my_int来代替int的使用:

my_int a = 100;
 

结构体变量

结构体定义后可以作为一种已存在的数据类型使用,但是它只是一个模型,没有具体的数据,只是告诉编译系统该结构由哪些数据类型组成,各占多少字节,并当成一个整体处理,同时编译系统没有在内存中给结构体分配内存空间

  1. 结构体(struct)变量的定义
  • 先定义结构体类型,在定义结构体变量
struct 结构体类型名 
{
    数据类型 成员名1;
    数据类型 成员名2;
    ...
    数据类型 成员名n;
};
struct 结构体类型名 变量名;
 

示例代码如下:

struct student 
{
    int sno;
    char name[10];
    char classname[20];
    float qrade[5];
};
struct student stul;

这里定义了一个名为 student 的结构体类型,它有四个成员,分别为学号 sno、姓名 name、班级名称 classname 和五门课程的成绩 grade。然后定义了一个结构体变量 stul,该变量的类型为 struct student

  • 在定义结构体类型同时定义结构体变量
struct 结构体类型名 
{
    数据类型 成员名1;
    数据类型 成员名2;
    ...
    数据类型 成员名n;
}结构体变量;
 

示例代码如下:

struct student 
{
    int sno;
    char name[10];
    char classname[20];
    float qrade[5];
}stul;

这里定义了一个名为 student 的结构体类型,和之前一样,它有四个成员,分别为学号 sno、姓名 name、班级名称 classname 和五门课程的成绩 grade。在结构体类型定义的最后,直接定义了一个名为 stul 的结构体变量,该变量的类型为 struct student

  • 直接定义结

你可能感兴趣的:(C语言项目化,c++,c语言,开发语言,c#)