第6章和第7章预习

1.bss全局变量相关:

bss段用来存放那些没有初始化的或者初始化为0的全局变量;

bss类型的全局变量只占运行时的内存空间,而不占用文件空间。

在整个程序运行周期中,bss数据是一直存在的。开始时需要初始化为0;

2常量数据段相关(rodata)

用来存放常量数据,但是常量不一定放在rodata中,是可以共享的。

在嵌入式系统中常量数据段放在rom里不用进入ram直接读取。

不能修改常量。

3.text代码段

存放函数和部分整型常量,与常量段相似。

4.栈

栈用于存放临时变量和函数参数,栈作为基本数据结构,是实现函数调用主要手段,用来管理函数调用的局部变量和参数。

5堆

堆是一种内存,生命周期完全由使用者控制。

malloc用来分配一块指定大小的内存

realloc用来重新分配一块存在的内存

free用来释放内存

6内存分配方式

静态分配:内存在程序编译时就已经分配好,这段内存在程序整个运行期间都有效,如全局变量,static等

在栈上创建。在执行函数时,函数的局部变量都可以在栈上创建,函数的执行结束,这些内存会自动释放。

从堆上分配,也就是动态分配,程序员利用malloc申请内存,自己负责用free解放内存。

七:无参宏与有参宏的区别

无参:格式#define 宏名 常数 /表达式/ 格式符

有参:格式#define(形参表)常数/表达式/格式符

八:条件编译:

在程序移植和调试时,可以使用条件编译。

第一种形式:

#ifdef

程序段

#else

程序段2

#endif

第二种形式

#if常量表达式

程序段

#else if

程序段2

#endif

第三种形式

#ifndef

程序段 1

#else

程序段2

#endif

九:结构体

结构体:将相关联的数据打包成一个整体,方便使用。

结构体与数组比较,结构体各个元素类型可以是不同的,而数组是必须相同的。

如:struct student

{  char name [10];

  char sex;

   int age;

};

十:联合体与结构体的不同

对于联合体不同成员的赋值,将会对其他成员重写,原来成员值不存在。

猜你喜欢

转载自blog.csdn.net/hujiaqi2018/article/details/79211559
今日推荐