数据结构3

 数据结构3_第1张图片

 数据结构3_第2张图片

 

const 修饰普通变量必须给初始值 不能修改
修饰指针变量 const在*前修饰内容 在*后修饰地址 修饰的不能更改 修饰函数参数不可修改
修饰函数返回结果保护返回值不可更改

static
修饰局部变量时 延长局部变量的生命周期
修饰全局变量时 限制全局变量只能在当前文件中被访问
修饰的变量只会被初始化化一次

结构体中字节对齐
在结构体中的每个属性会根据自己所占内存大小,来设置起始存储位置,起始存储位置必须是自身类型的整数倍
在上面对齐的基础上,最后整体会进行一次对齐,整体的字节个数要是一个数据的整数倍,这个数据是系统字节对齐和结构体中最大成员所占字节的之间取最小值。min(系统对齐字节数,结构体中所占内存最大的字节数)

数据存储的逻辑结构有哪些 什么逻辑结构
集合结构:任意两个数据元素之间没有任何关系,只是单纯存储在同一个集合中
线型结构:数据元素之间存在一对一的关系,在该结构中,除了第一个元素没有前驱,最后一个元素没有后继,其余所有数据都有且只有一个前驱和一个后继
树形结构:数据元素之间存在一对多的关系
图形结构:数据元素之间存在多对多的关系

数据结构的内存结构式是什么 分别有哪些
顺序存储:将逻辑上连续的数据元素,存储在物理内存也连续的空间内
链式存储:将逻辑上相邻的数据元素,存储在物理内存上随机位置
索引存储:在存储数据元素时,单独创建一个索引表记录数据元素所在位置
散列存储:也叫哈希存储,数据元素存储的位置跟数据元素的关键字有关

宏函数和函数区别
宏是一种预处理指令,使用 `#define` 来定义
宏展开发生在预处理阶段,不进行类型检查和语法检查
在编译之前,预处理器会对宏进行简单的文本替换,将宏调用处替换为相应的代码
宏的参数没有类型,所有参数在展开时会直接进行替换,没有类型检查
函数
函数是一段有名称的可执行代码块,有自己的函数体,可以包含多条语句
 函数具有明确定义的参数和返回类型,进行类型检查
函数调用发生在运行时,需要执行函数调用指令
函数可以返回值,也可以不返回值

宏定义和typedef区别
宏定义只是单纯的替换,不做任何正确性检测,是一个预处理指令
类型重定义需要做正确性检测,是一条语句
宏替换发生在预处理阶段,而类型重定义发生在编译阶段
如果是对普通单个重命名没有问题,但是对指针重命名就有问题了
 

你可能感兴趣的:(数据结构)