C语言
1.static关键字的作用?
static局部变量只被初始化一次,下一次依据上一次结果值;
在函数外定义的静态变量——静态全局变量,该变量的作用域只能在定义该变量的文件中,不能被其他文件通过extern引用。
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
2.const关键字的作用?
const意味着“只读”
声明常变量,使得指定的变量不能被修改。
修饰函数形参,使得形参在函数内不能被修改,表示输入参数。
修饰函数返回值,使得函数的返回值不能被修改。
3.volatile关键字的作用?
volatile指定的关键字可能被系统、硬件、进程/线程改变,强制编译器每次从内存中取得该变量的值,而不是从被优化后的寄存器中读取。例如:硬件时钟;多线程中被多个任务共享的变量等。
4.extern关键字的作用?
用于修饰变量或函数,表明该变量或函数都是在别的文件中定义的,提示编译器在其他文件中寻找定义。
5.sizeof关键字的作用?
sizeof是在编译阶段处理,且不能被编译为机器码。sizeof的结果等于对象或类型所占的内存字节数
6.结构体的赋值?
C语言中对结构体变量的赋值或者在初始化或者在定义后按字段赋值。
7.函数参数入栈顺序?
C语言函数参数入栈顺序是从右向左的
8.inline内联函数
inline关键字仅仅是建议编译器做内联展开处理,即是将函数直接嵌入调用程序的主体,省去了调用/返回指令
9.、“引用”与指针的区别是什么?
- 引用必须被初始化,指针不必。
- 引用初始化以后不能被改变,指针可以改变所指的对象。
- 不存在指向空值的引用,但是存在指向空值的指针。
指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。
10.、.h头文件中的ifndef/define/endif 的作用?
答:防止该头文件被重复引用。
11.#include<file.h> 与 #include "file.h"的区别?
答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。
11.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
答 :全局变量储存在静态数据区,局部变量在堆栈中。
12.什么是平衡二叉树?
答 :左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1。
13.堆栈溢出一般是由什么原因导致的?
答 :1.没有回收垃圾资源
2.层次太深的递归调用
14.冒泡排序算法的时间复杂度是什么?
答 :O(n^2)
15.什么函数不能声明为虚函数?
答:constructor
16、队列和栈有什么区别?
答:队列先进先出,栈后进先出
17、不能做switch()的参数类型
答 :switch的参数不能为实型。
18、局部变量能否和全局变量重名?
答:能,局部会屏蔽全局。
19.什么是预编译,何时需要预编译?
答:预编译又称为预处理,是做些代码文本的替换工作。处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等,就是为编译做的预备工作的阶段,主要处理#开始的预编译指令,预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。
c编译系统在对程序进行通常的编译之前,先进行预处理。c提供的预处理功能主要有以下三种:1)宏定义 2)文件包含 3)条件编译
1、puts()将一个字符串输出到终端
2、gets()从终端输入一个字符串到字符数组,并且得到一个函数值。
3、strcat()链接两个字符数组中的字符串。
4、strcpy()字符串复制函数。
5、strcmp()比较字符串作用。
6、strlen()测试字符串长度的函数不包括“\0”
7、strlwr()将字符串中的大写字母转换为小写字母。
8、strupr()将字符串中的小写字母转换为大写字母
20.函数
(1)一个源程序由多个函数组成。
(2)C程序的执行从main()函数开始;
(3)所有函数都是平行的;
(4)函数分类;可以分为标准和自定义,还可以分为有参函数和无参函数。
21.通过指针修改内容的汇编过程
1.找到指针变量的地址
2.通过指针变量的地址,找到内容的地址
3.通过地址找到内容
4.修改内容