关于typedef的讨论
2015-08-07 00:38
204 查看
定义结构体:
struct student{}; ps: 这是最简单的定义 此时定义变量: struct student s1,s2; #类型是struct student. 也可以: struct student{}stu; ps: 此时stu是变量,可在后面接个变量列表. srtuct {}变量列表; ps: 少用.
typedef和define:
define是预处理,typedef是编译时处理,在自己作用域内给一个已经存在的类型取一个别名. waing: typedef int * pint; ps: 引入一个新的助记符 #define PINT int * 这样const pint p; p不可更改,p指向的可改 const PINT p; p可改,p不可改 IM 因为pint是一个指针类型.
关于typedef的使用:
由2可知,typedef struct Student{}Stu; IM :此时Stu = struct Student,定义变量就Stu stu1; waing: 但在C++中,直接struct Student{}; 就可以Student stu1;即可.
关于字节对齐问题:
结构体字节对齐的细节和具体编译器实现相关,但一般而言满足三个准则: 1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除; 2) 结构体每个成员相对结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding); 3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节{trailing padding}。
相关文章推荐
- visual svn使用教程
- 模式开篇,策略模式,状态模式
- TTS-零基础入门-10分钟教你做一个语音功能
- JSSDK taobao js 研究 之 js sign的算法
- 第78讲:Type与Class实战详解
- Android应用:Button添加图片和文字
- IntelliJ IDEA 14.1上JFinal开发环境搭建手册
- double保留两位小数
- wait和waitpid详解
- UE4信息交互-蓝图类与关卡蓝图的信息交互
- oracle 数据库批处理文件
- Object 体系结构常用方法
- iPhone开发入门系列1(iOS8+Swift版)天天打靶APP学习15-16
- Ubuntu14.04 apt-get命令
- Matlab 文本处理
- 面向对象(01)
- Spring AOP 学习之java JDK动态代理
- C中的文件操作函数[笔记]
- Bitset 用法(STL)
- 手把手实现tablayout随recycleview滚动而滚动(非官方coordinatorlayout实现)