黑马程序员——c语言基础:结构体(基础)

1.结构体概念:

结构体是由一系列相同类型或不同类型的数据用构造方法构造的数据集合,也叫结构。


2.结构体作用:

结构体可以把功能相同的数据组织起来,存在一起,用的时候方便,而且在调用函数时,若传递的参数较多,传一个结构体相对而言简单些,很多系统自带的函数必须用结构体。


3.结构体的定义:

    struct结构体名{

       成员列表;

    }; //注意此处的分号不能省


4.结构体变量定义

    1)先定义结构体,然后再定义结构体变量

       格式:

             struct结构体名{

               成员列表;

              };

             struct结构体名 结构体变量名;

// 定义一个学生的结构体

struct Student{

    char name[20];

    char sex[4];

    int age;

    float score;

    int no;

}; // 注意:结构体定义完成后,计算机并不会给结构体分配内存空间,而会再定义结构体变量后,分配存储空间。

    struct Student stu1; // 表示定义一个Student结构体变量,变量的名称是stu1stu1因为是Student类型,所以可以存放学生的姓名、性别、年龄、成绩、学号


    2)定义结构体同时定义结构体变量

       格式:

            struct结构体名{

               成员列表;

            }结构体变量1,结构体变量2……;

 // 定义结构体同时定义结构体变量

    struct Student{

        char name[20];

        char sex;

        int age;

        float score;

        int no;

    }stu2,stu3; // student结构体定义了两个结构体变量,名称分别为stu2stu3


    3)使用匿名结构体定义结构体变量

        格式:

            struct {

               成员列表;

            }结构体变量1,结构体变量2……;

 // 使用匿名结构体定义结构体变量

    struct {

        char name[20];

        char sex;

        int age;

        float score;

        int no;

    }stu4,stu5; // 用匿名结构体定义了两个结构体变量,名称分别为stu4stu5



5.结构体变量中成员的访问方法

   表示结构体变量成员的一般形式是: 结构体变量名.成员名

   如:stu1.name 表示访问学生1的姓名


6.结构体变量的初始化

    

//先定义一个学生的结构体

struct Student{

    char name[20];

    char sex[4];

    int age;

    float score;

    int no;

};


1)先定义结构体变量,再初始化

    struct Student stu1; 

    stu1.age = 23;

    strcpy(stu1.name"gamhunter");


2)定义结构体变量的同时,进行初始化。注意:初始化的顺序要和定义结构体的顺序一致

    struct Student stu6 = {"张三","",23,23.4f,2345};


3)定义结构体的同时,对指定元素进行初始化

struct Student stu7 = {.name = "李四"};


7.结构体存储

    1)结构体占用的内存空间是每个成员占用的字节数之和(同时考虑对齐问题)。

    2)计算结构体变量在内存中占用字节数的方法:先找对齐模数(结构体中基本数据类型中占用字节数最大的那个),再计算结构体变量中各个成员占用的字节数之和。


8.结构体的作用域

   结构体根据作用域可以分为全局结构体和局部结构体。

    1)全局结构体定义在函数外部,它的作用域从定义的那一行开始直到本文件结束。

    2)局部结构体定义在函数内,其作用域在局部变量的作用域相同,只在代码块内部。






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值