zoukankan      html  css  js  c++  java
  • 【C语言】5-结构体

    一、什么是结构体

    * 在实际应用中,我们通常需要由不同类型的数据来构成一个整体,比如学生这个整体可以由姓名、年龄、身高等数据构成,这些数据都具有不同的类型,姓名可以是字符串类型,年龄可以是整型,身高可以是浮点型。

    * 为此,C语言专门提供了一种构造类型来解决上述问题,这就是结构体,它允许内部的元素是不同类型的。

    二、结构体的定义

    1.定义形式

     结构体内部的元素,也就是组成成分,我们一般称为"成员"。

    结构体的一般定义形式为:

    复制代码
     1 struct 结构体名{
     2     
     3     类型名1 成员名1;
     4     
     5     类型名2 成员名2;
     6     
     7     ……
     8     
     9     类型名n 成员名n;   
    10     
    11 };
    复制代码

    struct是关键字,是结构体类型的标志。

    三、结构体变量的定义

    前面只是定义了名字为Student的结构体类型,并非定义了一个结构体变量,就像int一样,只是一种类型。

    接下来定义一个结构体变量,方式有好多种。

    1.先定义结构体类型,再定义变量

    复制代码
    1 struct Student {
    2     char *name;
    3     int age;
    4 };
    5 
    6 struct Student stu;
    复制代码

    第6行定义了一个结构体变量,变量名为stu。struct和Student是连着使用的。

    四、结构体的注意点

    1.不允许对结构体本身递归定义

    如下做法是错误的,注意第3行

    1 struct Student {
    2     int age;
    3     struct Student stu;
    4 };

    2.结构体内可以包含别的结构体

    复制代码
     1 struct Date {
     2     int year;
     3     int month;
     4     int day;
     5 };
     6 
     7 struct Student {
     8     char *name;
     9     struct Date birthday;
    10 };
    复制代码

    注意第9行

    3.定义结构体类型,只是说明了该类型的组成情况,并没有给它分配存储空间,就像系统不为int类型本身分配空间一样。只有当定义属于结构体类型的变量时,系统才会分配存储空间给该变量

    复制代码
    1 struct Student {
    2     char *name;
    3     int age;
    4 };
    5 
    6 struct Student stu;
    复制代码

    第1~4行并没有分配存储空间,当执行到第6行时,系统才会分配存储空间给stu变量。

    五、结构体的初始化

    将各成员的初值,按顺序地放在一对大括号{}中,并用逗号分隔,一一对应赋值。

    比如初始化Student结构体变量stu

    复制代码
    1 struct Student {
    2     char *name;
    3     int age;
    4 };
    5 
    6 struct Student stu = {"MJ", 27};
    复制代码
    只能在定义变量的同时进行初始化赋值,初始化赋值和变量的定义不能分开,下面的做法是错误的:
    struct Student stu;
    stu = {"MJ", 27};




    ios开发
  • 相关阅读:
    [linux]Linux下的log
    [WDT]内部看门狗和外部看门狗
    [misc]printf/fprintf/sprintf/snprintf函数
    [Linux]read/write和fread/fwrite有什么区别
    移动端图片操作(二)——预览、旋转、合成
    移动端图片操作(一)——上传
    实现tap的多种方式
    Hammer.js分析(四)——recognizer.js
    Hammer.js分析(三)——input.js
    Hammer.js分析(二)——manager.js
  • 原文地址:https://www.cnblogs.com/XieMinQiang/p/5276083.html
Copyright © 2011-2022 走看看