您的位置:首页 > 编程语言 > C语言/C++

黑马程序员———C语言 结构体

2015-11-02 16:28 357 查看
------- Java培训、Android培训、iOS培训、.Net培训 、期待与您交流 --------

 一 构造数据类型
1.构造数据类型定义:根据已经定义的一个或多个数据类型用构造的方法来定义。
2.构造数据类型分为:数组类型
结构类型 共用体类型。

 二 结构体
1.结构体定义:由相同类型或者不同类型的数据用构造方法构造的类型。
2.结构体书写格式:struct 结构体名{
 
      成员列表;
 };
3.结构体定义的作用:把功能相同的数据组织,存在一起,用的时候更方便,并且在调用函数时,如果传递的参数较多,传递一个结构体而言更简单点,很多系统自带的函数必须用结构体。

4.定义结构体变量的3种方法

1)先定义结构体,然后在定义结构体变量。
 格式:
  struct
结构体名{
  成员列表;
 };
  struct 结构体名
结构体变量名;
 例如:
struct student {
        int age;
        int sex;
        ......;
    };
    struct
student stu;//定义结构体变量
 2)定义结构体的同时,定义结构体变量。
 格式:struct
结构体名 结构体变量名
 struct 结构体名{
 
 成员列表;
 
 }结构体变量1,结构体变量2....;
 例如:

struct student {

        int age;

        int sex;

        ......;

    }stu;
3)使用匿名结构体定义结构体变量。
 struct {
 
         成员列表;
 
 }结构体变量1,结构体变量2....;

5.访问结构体成员
 格式:结构体变量名.成员名
 
6.结构体变量的初始化
1)先定义结构体变量,再初始化 

struct student {

        int age;

        int num;

        ......;

    };

    struct student stu;

    stu.age=18;

    stu.num=20;
 2)定义结构体变量的同时,进行初始化。初始化的顺序要和定义结构体的顺序一致。

struct student {
        int age;
        int sex;
        ......;
  }stu1,stu2,stu3;
      struct
student stu1={18,女,21,男,20,女};//按照顺序来初始化
    
3)定义结构体变量的同时,还可以指定元素的初始化。

struct student stu3={.age=18};//指定元素的初始化
注意:结构体定义完成后,计算机并不会给结构体分配内存空间,会在定义结构体变量后,分配存储空间。
 
7.结构体变量存储的原理
  结构体占用的内存空间是每个成员占用的字节数之和(考虑对其问题)。
  考虑对其问题的意义:a.简化了处理器与内存之间传输系统的设计
                                           b.提升读取数据的速度
 
 步骤:找对齐模数(是结构体中的基本数据类型中占用字节数最大的那个)
             再去加大小
             比较是否对齐,不对齐的话,在对齐到模数的倍数上
 
8.结构体作用域
 结构体类型定义在函数内部的作用域和局部变量是一致的,函数外部定义的结构体类型类似于全局变量,全局作用域:从定义的那行开始一致到本文件结束。如果在函数内部在定义一个与函数外部同名的结构体,那这个函数内部新定义的结构体,从定义的行数开始,一直到return后面的大括号结束,所以会暂时屏蔽函数外部定义的全局结构体。如果要把这个函数内部新定义的结构体如果放在代码块里面,就不会屏蔽局外的。
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: