一个存储区的地址必须是它自身大小的整数倍
(double类型存储区的地址只需要是4的
整数倍)
这个规则叫数据对齐
结构体里面的子存储区通常也需要遵守数据
对齐的规则
数据对齐会造成结构体内部子存储区之间
有空隙 结构体存储区的大小必须是它所包含的基本类型
存储区中占地最大类型存储区大小的整数倍
(如果这个基本类型是double类型则结构体
存储区的大小只需要是4的整数倍)
这个规则叫数据补齐
数据补齐可能在结构体最后增加一些浪费的
字节 枚举有可以用来创建新的类型
枚举类型存储区就是整数类型存储区,枚举
类型存储区里应该只能存放有限的几个整数
枚举类型也需要先声明然后才能使用,声明
的时候需要使用enum关键字
声明枚举类型的时候需要提供一组名称,计算机
为每个名称分配一个对应的整数,枚举
类型存储区里只能存放这些整数
不同枚举类型所能记录的整数范围不同
计算机把从0开始连续的非负数分配给枚举类型
里的名称
可以在声明枚举类型的时候指定为某个名称
分配的整数,这个名称后面的名称对应的
整数也会发生变化 联合也可以用来创建新的数据类型
联合也需要先声明然后再使用,声明联合的时候
需要使用union关键字
联合成员变量所占的存储区是互相重叠的
联合所有成员变量的地址都是一样的
联合存储区可以当作多种不同类型的存储区
使用,每个成员变量代表了一种可能的
类型
联合存储区的大小就是最大成员变量的大小 用来记录普通变量地址的指针叫做一级指针
二级指针可以记录一级指针的地址,通过它
可以找到捆绑的一级指针
声明二级指针时需要在指针变量名称前加** 二级指针变量名称前加**可以表示捆绑
的普通变量存储区
二级指针变量名称前加*可以表示捆绑
的一级指针存储区 二级指针可以代表指针数组但是不能代表
二维数组 无类型指针有可能记录一级指针的地址,这个
时候必须把这个指针强制类型转换二级
指针然后再使用 二级指针通常作为形式参数使用,使用二级
指针形式参数可以让被调用函数向调用
函数传递一个地址数据 C语言里函数也有地址
函数名称可以用来表示函数的地址
函数指针可以用来记录函数的地址
函数指针也需要先声明然后再使用
函数指针的声明可以根据函数声明变化得到 函数指针也分类型,不同格式的函数适合
与不同类型的函数指针捆绑
函数指针可以用来调用函数 函数指针可以作为形式参数使用
会作为实际参数使用的函数叫回调函数 可以在程序运行的时候临时决定需要分配多少
存储区
这种分配内存的方法叫动态内存分配
为了管理动态分配内存需要使用一组标准函数
为了使用这些标准函数需要包含stdlib.h头文件 malloc函数可以动态分配一组连续的字节
这个函数需要一个整数类型的参数表示希望分配
的字节个数
它的返回值表示分配好的第一个字节的地址
如果失败则返回值是NULL
函数的返回值记录在一个无类型指针里,必须
首先强制类型转换成有类型指针然后才能
使用 动态分配内存使用完以后必须还给计算机,否则
会造成内存泄漏问题
free函数可以用来释放动态分配内存
这个函数需要分配好的第一个字节的地址作为
参数
一起分配的内存必须一起释放
如果用指针做参数调用free函数则函数结束后
指针成为野指针,必须恢复成空指针

结构体、枚举、联合(day14)的更多相关文章

  1. C 碎片八 结构体&枚举&联合

    一.结构体 1, 结构体定义 结构体类型的定义:任意数据类型变量的集合.用于描述一个具体的事物的信息,在C语言中描述一件事物一般都是用结构体 声明结构体类型的格式: struct  结构体名 {成员列 ...

  2. C++_知识点_结构体/枚举/联合

    //C++中结构体的不同之处 #include <iostream> #include <string> using namespace std; int main(void) ...

  3. OC基础--结构体 枚举做类成员属性

    结构体  枚举作类的成员属性: 定义一个学生类 性别 -- 枚举 生日 入学日期  毕业日期  --  结构体 代码示例: 声明文件 Student.h: #import <Foundation ...

  4. C语言基本语法——结构体、联合和枚举

    一.结构体 1.什么是结构体 2.结构体语法格式 3.结构体所占内存空间 4.结构体成员赋值 二.联合 1.什么是联合 2.联合语法格式 三.枚举 1.什么是枚举 2.枚举语法格式 一.结构体 1.什 ...

  5. C语言进阶——结构体,联合,枚举

    ----------------------------------------------------------我是一条划分线----------------------------------- ...

  6. C和指针 (pointers on C)——第十章:结构体和联合(上)

    第十章 结构和联合 这个部分先介绍了.运算符,能够供直接訪问,还介绍了->运算符,它取代结构体指针的间接訪问操作(*struct).xxx 这一章新手理解起来不算太难,没有学过操作系统的话理解位 ...

  7. C# 结构体 枚举类型

    注意:枚举类型和结构体都属于值类型. 结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的方法: struct student { public int nianl ...

  8. C# 类&结构体&枚举

    类: class Lei  //要和static void Main(string[] args)平级: { public int lei_int;  //public是关键字,代表访问权限,这里是公 ...

  9. C#基础 结构体 枚举类型

    结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的例子: struct student { public int nianling; public int fen ...

  10. C语言的结构体,枚举类型在程序中的作用

    http://www.xue63.com/xueask-1221-12212854.html 结构和枚举类型从程序实现的角度来说,是用更接近自然语言的方式来表达数据.比如说实现2维空间的点,你可以使用 ...

随机推荐

  1. 微信推送给服务器的XML消息解析-springmvc 解析xml数据流

    微信推送给服务器的XML消息解析: 可以使用request.getInputStream(); 获取输入的消息流:但是需要自己解析流: spring mvc自带解析功能: controller中: @ ...

  2. Android之——AsyncTask和Handler对照

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46952835 AsyncTask和Handler对照 1 ) AsyncTask实 ...

  3. ORACLE11G设置IP訪问限制

    出于数据安全考虑,对oracle数据库的IP做一些限制,仅仅有固定的IP才干訪问. 改动$JAVA_HOME/NETWORK/ADMIN/sqlnet.ora文件 添加下面内容(红色表示凝视): #开 ...

  4. SharePoint 2013 改动表单认证登录页面

    前 言 之前的博客我们介绍了怎样为SharePoint配置表单登陆,可是.登陆页面是丑.非常丑.非常丑.特别非常丑! 我们如今就介绍一下怎样定制SharePoint表单登陆页面! SharePoint ...

  5. jQuery - 制作非缘勿扰页面特效

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. luogu1006 传纸条

    题目大意 小渊坐在矩阵的左上角,坐标 (1,1 ),小轩坐在矩阵的右下角,坐标 (m,n) .从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传给小渊的纸条只可以向上或者向左传递. 在活动进行中,小 ...

  7. oc25--私有变量私有方法

    // // Person.h #import <Foundation/Foundation.h> @interface Person : NSObject { @public int _a ...

  8. android 添加一个按键键值【转】

    本文转载自:http://blog.csdn.net/u012719256/article/details/52526046 1.frameworks/base/data/keyboards/Gene ...

  9. codeforces 898F Hash

    F. Restoring the Expression time limit per test 2 seconds memory limit per test 256 megabytes input ...

  10. B1230 [Usaco2008 Nov]lites 开关灯 线段树

    就是线段树维护异或和.之前我线段树区间修改down都是修改当前区间,结果debug出不来,改成每次向下了. 题干: Description Farmer John尝试通过和奶牛们玩益智玩具来保持他的奶 ...