C语言基础之结构体一

314 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第二天,点击查看活动详情

结构体与共用体

前言

这短时间就更新最近在复习的C语言程序设计时做的笔记吧。。。小编是跟着b站上的小甲鱼视频学习的,有兴趣的也可以去学习。总的来说,小甲鱼讲的挺好的,这也给我了亿点点动力,不过更多的还是得动手实践!!

知识点1--概述

问题定义

  1. 有时需要将不同类型的数据组合成一个有机的整体,以便于引用。如:一个学生有学号、姓名、性别、年龄、地址等属性
```
int num;
char name[20];
char sex; //F/M
int age;
int char addr[20];
```

2. 定义一个结构的一般形式为:

```
struct 结构名{
    成员表列
};
```

成员表列有若干个成员组成,每个成员都是该结构的一个组成部分。对每个成员也必须做类型说明,其形式为:

```
类型说明符 成员名;
struct student{
    int num;
    char name[20];
    char sex; //F/M
    int age;
    float score;
    int char addr[20];
};
```

知识点2--定义结构体类型变量的方法

可以采用以下3种方法定义结构体类型变量:

  1. 先声明结构体类型在定义变量名

    例如:
    struct student  student1,student2;
    类型名   结构体    变量名     变量名
    

    定义了student1,student2为struct student类型的变量,即它们具有struct student类型的结构。

    struct student{
        int num;
        char name[20];
        char sex; //F/M
        int age;
        float score;
        int char addr[20];
    }student1,student2;
    

    在定义了结构体变量后,系统会为之分配内存单元。

    #include<stdio.h>
    int main(){
        struct student{
            int num;
            char name[20];
            char sex;
            int age;
            float score;
            char addr[30];
        }student1;
        
        printf("the size of struct is :%d\n",sizeof(student1));
        //输出68 = 4+20+1+4+8+30 = 67 => 原因:编译器的优化结果 
    }
    
  2. 在声明类型的同时定义变量

  3. 直接定义结构体类型变量

举个栗子~

看图下定义:

image.png

  1. 首先应该定义一个结构date,由month、day、year三个成员组成;

  2. 在定义并说明变量boy1和boy2时,其中的成员birthday被说明为date结构类型。成员名可与程序中其他变量同名,互不干扰。

    struct date{
        int month;
        int day;
        int year;
    };
    struct{
        int num;
        char name[20];
        char sex;
        struct date birthday;
        float score;
    }boy1,boy2;
    

C语言学习之小甲鱼视频链接