C语言常见复试面试问题

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.、“引用”与指针的区别是什么?

  1. 引用必须被初始化,指针不必。
  2. 引用初始化以后不能被改变,指针可以改变所指的对象。
  3. 不存在指向空值的引用,但是存在指向空值的指针。
    指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。

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.修改内容

  • 18
    点赞
  • 266
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值