c语言联合验证大小端存储,2021C语言面试题及答案.docx

1、关键字static的作用是什么?

这个简单的问题很少有人能回答完全。在C语言中,关键字static有三 个明显的作用:1)-在函数体,一个被声明为静态的变量在这一函数被调用过 程中维持其值不变。2)?在模块内(但在函数体外),一个被声明为静态的变量 可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的 全局变量。3)?在模块内,一个被声明为静态的函数只可被这一模块内的其它函 数调用。那就是,这个函数被限制在声明它的模块的本地范W内使用。大多数 应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂 得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和 代码范围的好处和重要性。

2、.h头文件中的ifndef/define/endif的作用? 答:防止该头文件被巫复引用。

3、描述实时系统的基本特性

答:在特定时间内完成特定的任务,实时性与可靠性。

4、什么是平衡二义树?

答:左右?子树都是平衡二义树且左右子树的深度差值的绝对值不大于1。

5、冒泡排序算法的时间复杂度是什么? 答:0(n"2)

6、队列和栈有什么区别?

答:队列先进先出,栈后进先出

7、局部变量能否和全局变量重名?

答:能,局部会屏蔽全局。要用全局变量,需要使用":r局部变量可以与 全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用 到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部 变量,比如在两个循环体内都定义一个同名 的局部变量,而那个局部变量的作 用域就在那个循环体内

8、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 答、可以,在不同的C文件中以static形式来声明同名全局变量。可以在不 同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变 量赋初值,此时连接不会出错。

9、dowhile 和 whiledo 有什么区别?

答前一个循环一遍再判断,后一个判断以后再循环。

10、程序的内存分配

答:一个山C/C++编译的程序占用的内存分为以下儿个部分:

1、栈区(stack)-山编译器自动分配释放,存放函数的参数值,局部变量的 值等。其操作方式类似于数据结构中的栈。

2、堆区(heap) —一般山程序员分配释放,若程序员不释放,程序结束时可能

111 OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表, 呵呵。

3、全局区(静态区)(static) —全局变a和静态变量的存储是放在一块的,

初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的 静态变量在相邻的另一块区域。程序结束后山系统释放。

4、文字常量区一常量字符弗就是放在这里的。程序结束后山系统释放。

5、程序代码区一存放函数体的二进制代码

11、什么是预编译,何时需要预编译?

答:预编译乂称为预处理,是做些代码文本的替换工作。处理#开头的指令,比如 拷贝^include包含的文件代码,#define宏定义的替换,条件编译等,就是为 编译做的预备工作的阶段,主要处理#开始的预编译指令,预编译指令指示了在 程序正式编译前就山编译器进行的操作,可以放在程序中的任何位置。

C编译系统在对程序进行通常的编译之询,先进行预处理。C提供的预处理功 能主要有以下三种:1)宏定义2)文件包含3)条件编译

12、关键字volatile有什么含总 并给出三个不同的例子。

答:一个定义为volat订e的变量是说这变量可能会被意想不到地改变,这 样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个 变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里 的备份。下面是volatile变量的儿个例子:

1)?并行设备的硬件寄存器(如:状态寄存器)

2), 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)

3),多线程应用中被儿个任务共孕的变量回答不出这个问题的人是不会被雇佣 的。我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。

嵌入式系统程序员经常同硬件、中断、RTOS等等打交道,所用这些都要求 volatile变量。不懂得volatile内容将会带来灾难。假设被面试者正确地回 答了这是问题(嗯,怀疑这否会是这样),我将稍微深究一下,看一下这家伙是 不是直正懂得volatile完全的重要性。

!)■-个参数既可以是const还可以是volatile吗?解释为什么。

2)?—个指针可以是volatile吗?解释为什么。

3)?下面的函数有什么错误:

int square(volatile int *ptr)

return *ptr * *ptr;

下面是答案:

1).是的。一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值