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开发
  • 相关阅读:
    使用Redux管理你的React应用(转载)
    基于webpack使用ES6新特性(转载)
    在SublimeText上搭建ReactJS开发环境(转载)
    Javascript 严格模式详解
    HTML5探秘:用requestAnimationFrame优化Web动画
    requestAnimationFrame,Web中写动画的另一种选择
    Gulp自动添加版本号(转载)
    一小时包教会 —— webpack 入门指南
    React 入门实例教程(转载)
    走向视网膜(Retina)的Web时代
  • 原文地址:https://www.cnblogs.com/XieMinQiang/p/5276083.html
Copyright © 2011-2022 走看看