人人范文网 范文大全

C程序员面试简答题

发布时间:2020-03-03 01:23:05 来源:范文大全 收藏本文 下载本文 手机版

经典面试题-C语言与数据结构

(自己整理的一些C语言与数据结构面试简答题,希望对大家有所帮助,同时程序员,共勉…..红色为答案)

1.用预处理指令#define 声明一个常数,用以表明 1 年中有多少秒(忽略闰年 问题);

#define YEAR (60 * 60 * 24 * 365)UL

2、写一个\"标准\"宏MIN函数 ,这个宏输入两个参数并返回较小的一个

#define MIN(a, b) ((a)

3、用变量a给出下面的定义

一个整型数(An integer) int a

b)一个指向整型数的指针( A pointer to an integer) int *a

c)一个指向指针的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an integer ) int **a d)一个有10个整型数的数组( An array of 10 integers)

int a[10] e)一个有 10 个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers) int *a[10]

f)一个指向有10个整型数组的指针( A pointer to an array of 10 integers)

int (*a)[10] g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)

int*(a(int))

h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返 回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )

int (*a[10]) (int)

4、关键字volatile有什么含意? Volatile是一个类型修饰符,它是被设计用来修饰不同线程访问和修改的变量,

它的作用是来确保本条指令不会编译器的优化而省略,且要求每次直接读值。即防止编译器优化,传说这个关键字是区别软件工程师和嵌入式工程师的一个重要标志。 并给出三个不同的例子。

1、并行设备的硬件寄存器;

2、一个终端服务子程序会访问到的非自动变量;

3、多线程应用中被几个任务共享的变量

5、结构与联合有和区别?。

结构和联合都是由多个数据组成的,但是在任何时间,联合只存在某一被选定的数据成员,而结构存在了所有的数据成员;

对联合某一数据成员赋值,对其他成员的的值也会改变,但是对结构中,对其中一个数据成员赋值不影响其他的数据成员

阶段性测试

6、求下面函数的返回值(微软)

int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; }

7、数组与指针的区别?

一个数组是一个地址,一个指针是一个地址的地址, 址

移位操作为何最好使用无符号数?

如果是有符号的话,移位可能会改变符号,造成错误。

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

数组是对应地址,指针是指向地声明为静态变量,这样此变量会保存在全局静态数据区;

声明作用域为当前文件。这个也是经常问到的题目,建议自己搜一下理解深刻, 9.#include 与 #include \"file.h\"的区别?

系统自带文件,自定义文件

10、下面const的含义如何?

const int *a; a可变,a指向的对象不可变

int const *a; a可变,a指向的对象不可变

int * const a; a不可变 ,a指向的对象不可变

int const * const a; 都不能变 10.什么是内存操作越界?

对变量在使用的过程中超出定义范围,即为内存越界,如定义数组

int a[10],在操作过程中 有

a[10] = “hello world“;就会出现内存越界,因为加上‘\\0’,字符串大小是11,

12.什么是内存泄漏? 造成内存泄漏的原因有哪些?

使用的某块内存,却未释放,长此以往,如服务器端的程序,长期不关闭的话,会造成内存越来越少,即为内存泄露。在使用

new – delet

malloc – free时尤其注意

13、请说出const与#define 相比,有何优点?

const常量有数据类型,而宏常量没有数据类型,只是简单的替换,前者编译器能进行安全检查,后者则不能被安全检查。

14、函数式宏定义和函数调用有什么不同?

const常量有数据类型,而宏常量没有数据类型,只是简单的替换,前者编译器能进行安全检查,后者则不能被安全检查。

15、中参数传递有什么特点? 我们应当注意些什么?

一般来说包括传值和传地址,在传值的过程中应注意:形参与实参各占一个独立的存储空间,形参的存储空间是被调用才分配,调用开始系统为形参开辟一个临时存储区,然后将格实参传递给形参,从而形参得到实参的值

15、goto有什么特点? 在C语言中对goto的使用有什么注意事项?

goto灵活跳转,使某些复杂的问题可以轻易解决;但是其会破坏C的结构化编程风格,易造成不可察觉的错误。

16、

使用swicth的注意事项

Break不能遗漏,这会造成每条逐句执行;default就算什么也不做,也请尽量写上。

17、嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?

一般来说

while(1) {

} 就可以了

18、#define STRING char *; Typedef更好哪个更好一些为什么? #define是简单替换 易遇到问题 且出错不易查找

19、C语言对左值有什么限制? 只要不是常量就可以

20、程序调试中常见的错误有哪些? 考察你是不是真的有丰富的编程经验,一般是逻辑错误、语法错误、段错误;

21、什么是野指针?如何避免野指针? 释放之后未被制空的指针,free之后立即制空,同时对于指针要养成初始化的习惯 22.什么是函数指针?为什么能够使用函数指针,

函数指针就是指向函数的指针变量;每个函数都有一个函数入口,函数指针即调用了此函数入口。

23、下列语句的作用是什么?

//循环体 #ifndef HEADER_FILENAME #define HEADER_FILENAME /* body of header */ #endif

意思就是如果此文件中没有定义名为 ‘HEADER_FILENAME’的头文件就在此定义,主要是为了防止头文件重复加载

24、全局变量和局部变量在内存中是否有区别?如果有,是什么区别?

全局变量存储在全局静态数据区中, 局部变量存储在栈空间中

黑马程序员:IOS面试宝典之c语言

C程序员精通Perl

程序员实验室 C 基础教程

C程序员实习日记

C 程序员求职信某

C 程序员转正申请书

程序员面试自我介绍

程序员面试总结

程序员面试智力题

程序员面试自我介绍

C程序员面试简答题
《C程序员面试简答题.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档