C面试题及答案

  1、三种基本的数据模型

  答:按照数据结构类型的不同,将数据模型划分为层次模型、网状模型和关系模型。

  2、结构与联合有和区别?

  答:(1). 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。

  (2). 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的

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

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

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

  1、 总是使用不经常改动的大型代码体。

  2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。

  4、描述内存分配方式以及它们的区别?

  答:1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。

  2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。

  3) 从堆上分配,亦称动态内存分配。程序在运行的时候用 malloc 或 new 申请任意多少的内存,程序员自己负责在何时用 free 或 delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多

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

  答:能,局部会屏蔽全局。要用全局变量,需要使用"::"

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

  6、如何引用一个已经定义过的全局变量?

  答 、可以用引用头文件的方式,也可以用 extern 关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变量,假定你将那个变量写错了,那么在编译期间会报错,如果你用 extern 方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。

  7、全局变量可不可以定义在可被多个.C 文件包含的头文件中?为什么?

  答 、可以,在不同的 C 文件中以 static 形式来声明同名全局变量。

  可以在不同的 C 文件中声明同名的全局变量,前提是其中只能有一个 C 文件中对此变量赋初值,此时连接不会出错。

  8、语句 for( ;1 ;)有什么问题?它是什么意思?

  答 、和 while(1)相同,无限循环。

  9、do„„while 和 while„„do 有什么区别?

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

本文已影响6827
上一篇:c语言面试编程题目 下一篇:c语言面试找错笔试题

相关文章推荐

|||||