1.储存 c语言的内存可分为虚拟内存和物理内存,将其中一个C语言含如进程的虚拟内存放大来看,会发现其内部包下区域:栈,堆,数据段,代码段四部分
栈:存放的是命令行参数(比如char *argv[]),环境变量,局部变量
堆:用户自定义空间(比如用malloc,calloc申请的空间)
数据段:全局变量和用static定义的静态数据
代码段:用户代码和系统初始化代码
- static
static的作用:
1.对于全局变量和全局函数来说:使它们只能在本文件使用,在多文件时
不必担心命名冲突
2.默认初始化为0
3.对于局部变脸来说:使用完后不会立马被释放,还会继续保存
- const
具有不可变性:const [数据类型] [变量]
- I2C有几根线,分别是什么?
两根,数据线和时钟线
- 你对C语言指针的看法及了解,当使用指针的时候需要注意哪些
定义好了要初始化,不使用时让它置空;
引用时要注意不要越界
不用时要释放指针空间,然后让它指向NULL;
- 数组和链表的优缺点,链表的遍历、逆序是怎么进行的
1.数组需要提前申请所占内存的大小,空间是连续的,插入和删除效率低,
在栈中分配空间
2.链表的空间可以是不连续的,只需要用指针把他们关联起来,内存是动态分配的,
方便扩充,不方便查找,空间利用率高
- malloc的了解
1.在堆中申请空间,最后要释放掉,初始化时要用memset,申请的空间是连续的,
2.calloc命令,则不用初始化,它可以将一块内存分成多块空间
- this指针的性质;
1.this 是类的指针
2.this 指针是在成员函数的开始前构造,并在成员函数的结束后清除
- 从.c源文件到执行问件要经历哪几个步骤?
1.预处理:预处理过程主要处理那些源文件中的以“#”开始的预编译指令。
包括#include,#define, #if,等等。
2.编译:编译过程就是把预处理的文件进行一系列的词法分析,语法分析,
语义分析以及优化后产生相应的汇编代码文件。
3.汇编:将汇编代码文件变成能被计算机识别的二进制代码文件
4.链接:将各个源文件编译好的有用的代码链接起来,使他们能够互相引用
|