c——汇编角度理解类型定义 对象定义
来源:互联网 发布:如何破解软件试用期 编辑:程序博客网 时间:2024/05/29 09:12
c语言
类型定义
类型定义是model,描述对象在内存中的存储结构,用来辅助编译器在编译期生成目标代码,一旦编译完成,生成目标代码,类型就被discard,不复存在,类型不占据内存空间,学过汇编知道,目标代码中没有任何类型的存在痕迹,汇编代码是无类型的
自定义类型与内置类型无本质区别
- 内置类型可理解为语言预定义的自定义类型,而自定义类型为开发者定义的内置类型
- 内置类型可理解为每个文件(头文件或源文件)预包含(#include)内置类型的类型信息,而自定义类型需开发者包含(#include)自定义类型的类型信息
因此类型定义为文件作用域,每个文件(头文件或源文件)要使用自定义类型需包含(#include)自定义类型的类型信息
同一文件(头文件或源文件)不能多次包含(#include)同一自定义类型的定义,否则编译器不知道使用哪个,重定义error
对象定义
对象定义是对物理内存的逻辑抽象,对象是一块命名的物理内存,其字长跟对象类型相关
汇编语言
学过汇编知道,汇编的核心就是对内存的操作,包括内存分配,内存寻址,内存访问(读写内存)
- 内存分配:分配多大空间内存
- 内存寻址:找到内存访问起始地址
- 内存访问:读写多少字节长度的内存
解释:
- 数组类型的成员类型相同,因此第n个数组成员的内存寻址为(int*)&arr + n * sizeof(int),内存访问长度为sizeof(int),数组成员类型为int
- struct类型的成员类型不同,因此struct类型定义时每个成员保存了该成员相对于struct首地址的offset和成员类型字长,注意struct内存对齐
- union类型的成员类型不同,因此union类型定义时每个成员保存了该成员相对于union首地址的offset和成员类型字长,注意union内存对齐,但union是一种特殊struct,其每个成员相对于union首地址的offset均为0
0 0
- c——汇编角度理解类型定义 对象定义
- c——类型声明 类型定义
- c——对象声明 对象定义
- C++------const类型定义
- C语言类型定义
- C-定义类型
- C++——定义变量的底层实现理解
- C++(1)类和对象——定义
- 4.3 结构类型——类型定义
- swift——对象定义
- Objective-C 定义的类型
- C语言常规优化策略——参数传递、宏定义、全局变量与汇编
- C中使用汇编定义的字符串
- C#—类、接口定义
- C#—集合类定义
- 从汇编角度看C语言类型转换
- 多线段几何图形 —— 类型定义
- 深入浅出SharePoint—字段类型定义
- ExtJS学习笔记(十三) Ext Form checkboxgroup、radiogroup和其他字段 设置和获取数据
- 6、数码管控制实验
- Oracle高级查询--分组查询篇
- C语言中mallloc()和free()函数的使用和分析
- STM32F10x_模拟I2C读写EEPROM
- c——汇编角度理解类型定义 对象定义
- EventBus替代AsyncTask在子线程中处理任务
- |BZOJ 2060|动态规划|Visiting Cows 拜访奶牛
- [IO系统]05 open流程分析
- Android studio下将项目代码上传至github包括更新,同步,创建依赖
- Maven resource 配置中include与exclude及其filter的使用
- 在leetcode中掌握到的[长期更新]
- android 使用SharedPreferences对数据存储/删除/读取/文件删除
- thinkphp截取字符串长度,模板变量限制输出字数的方法