面试the interview questions and answers

面试the interview questions and answers

ID:47039284

大小:57.25 KB

页数:42页

时间:2019-07-04

面试the interview questions and answers_第1页
面试the interview questions and answers_第2页
面试the interview questions and answers_第3页
面试the interview questions and answers_第4页
面试the interview questions and answers_第5页
资源描述:

《面试the interview questions and answers》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、/**c面试题库整理目的:提高学员c面试能力时间:2013.03整理人:hejie**//**面试题库修改1:修改日志:时间2013.03.14修改人:hejie修改内容:1.调整不合理分类2.删除部分重复题目3.添加部分题目,题库更加丰富4.修改答案剖析,使之更合理,标准**/基础部分关键字试题1:关键字const有什么含意?答案:(1)可以修饰const常变量(2)const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制试题2:分析以下代码定义,说明其特性constinta;intconsta;constint*a;int*consta;intconst*

2、consta;答案:前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。思考3:const修饰的常量与宏的区别答案:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。试题4:关键字volatile有什么含意

3、?并给出三个不同的例子。答案:一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。1)并行设备的硬件寄存器(如:状态寄存器)2)一个中断服务子程序中会访问到的非自动变量(Non-automaticvariables)3)多线程应用中被几个任务共享的变量保护,可以预防意外的变动,能提高程序的健壮性。试题5:1)一个参数既可以是const还可以是volatile吗?解释为什么。2);一个指针可以是volatile吗?解释为什么。3);下面

4、的函数有什么错误:intsquare(volatileint*ptr){return*ptr**ptr;}答案:1)是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。2)是的。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。3)这段代码有点变态。这段代码的目的是用来返指针*ptr指向值的平方,但是,由于*ptr指向一个volatile型参数,编译器将产生类似下面的代码:intsquare(volatileint*ptr){inta,b;a=*ptr;b=*ptr;returna*b;

5、}由于*ptr的值可能被意想不到地该变,因此a和b可能是不同的。结果,这段代码可能返不是你所期望的平方值!正确的代码如下:longsquare(volatileint*ptr){inta;a=*ptr;returna*a;}试题6.关键字static的作用是什么?答案:在C语言中,关键字static有三个明显的作用:1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3)在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这

6、个函数被限制在声明它的模块的本地范围内使用。总结:static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;  static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;  static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝.试题7.如何引用一个已经定义过的全局变量?  答案:  可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用

7、extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。试题8:在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”?例子:#ifndef__INCvxWorksh#define__INCvxWorksh#ifdef__cplusplusextern"C"{#endif/*...*/#ifdef__cplusplus}#endif#endif/*__INCvx

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。