C++基础面试题.docx
《C++基础面试题.docx》由会员分享,可在线阅读,更多相关《C++基础面试题.docx(19页珍藏版)》请在优知文库上搜索。
1、1.const符号常域:、constchar*p(2) 、charconst*p(3) 、char*constp如果COnSt位于星号的左恻,则const就是用来修饰指针所指向的变量:,即指针指向为常量.如果ConSt位于星号的右恻,const就是修饰指针本身,即指针本身是常ffi2 .析构函数和虚函数的用法和作用?析构函数的作用是当对象生命期结束时释放对象所占用的资源。析构函数用法:析构函数是特殊的类成员函数它的名字和类名相同,没有返回值,没有参数不能随意调用也没仃垂我。只是在类对象生命期结束时有系统自动调川.虚函数用在继承中,当在派生类中需要重新定义基类的函数时需要在基类中将该函数声明为虚
2、函数,作用为使程序支持动态联遍。3 .维和栈的区别栈(StaCk):由编译胧自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似J微据结构中的栈。堆:般由程序员分配释放,若不释放,程序结束时可能由OS回收,注意它与数据结构中的堆是两回事,分配方式类似.4 .头文件的作用是什么?1 .通过头文件来调用阵功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取出相应的代科。2 .头文件能加强类型安全检杳。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译
3、器就会指出错误,这一筒雎的规则能大大减轻程序员调试、改错的负担。5 .内存的分配方式有几种?1 .从静态存储区域分配。内存:在程序编译的时候已经分配好,这块内存在程序的整个运行期间都存在。如全局变量。2 .在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在校上创建,函数执行结束时这些存储单元自动被糅放。校内存分配运算内置于处理器的指令集中,效率高,但是分配的内存容量有限.3 .从堆上分配,亦称动态内存分配“程序在运行的时候用InalIoC或new申请任意多少的内存,程序员自己负责在何时用free或delele择放内存。动态内存的生存期由我们决定,使用非常灵活。6. BOO1.、floa
4、t,指针变量与零值比较的if语句”。Boo1.:If(flag)或if(!flag)FloaticonstfloatEPSINON=0.00001;If(x=.EPS1NW)M(x=或7此类形式。指针*p:if(P=NU1.1.)if(p!=NU1.D7. 以下为WindowsNT下的32位C+程序,请计算sizeof的值Charstr=Hello”;Char*p=str;Intn=10请计算:SizeofCstr)=6Sizeof(p)=4Sizeof(n)=2VoidFunc(charstr100)请计算:SiZeof(Str)=4)Void*p=ulloc(100)请计克:SiZeOf(
5、P)=48. #includefilename.h和#includefilename,h”有什么区别对于*includc,编译器从标准库路径开始搜索filename,对于#includefilename,h,编译器从用户的工作路径中开始搜索filename,h9. ConSt有什么用途1 .可以定义ConSt常向:2 .ConSt可以修饰函数的参数、返回值,其至函数的定义体被COnSt修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。10 .在C+程序中调用被C编译器编洋后的函数,为什么要加externC”?C+语言支持函数重载,C语言不支持函数重载。函数被C+编译后在库中的名
6、字与C语言的不同。假设某个函数的原型为:voidfee(intx,inty);该函数被C编译罂编译后在库中的名字为一foo,而C+编译器则会产生像_foo_int_int之类的名字.C+提供了C连接交换指定符号extern“C”来解决名字匹配的问题。11 .内存思考题VoidGetMemory(char*p)P=(char*)malIoc(100);VoidTest(void)Char*str=NU1.1.;GetMemory(Slr);Strcpy(str,helloworldw):Printf(str):函数内的变员是独立于main的,对其改变不会影响main的变员请问运行Test函数会仃
7、什么样的结果?程序会崩溃,因为GeIMemOy并不能传递动态内存:,TeSl函数中的str一直是NU1.1.oStrycpyCstr,helloWOrId);将使程序崩渍。Char*GetMemory(void)Charp=helloworld;Returnp;)VoidTest(void)Char*str=NU1.1.:Str=GetMcmoryO:Printf(str):)请问Test函数会有什么样的结果?可以是乱码.因为GetMemOry返回的是指向“栈内存”的指针,该指针的地址不是NU1.1.,但其原现的内容已经被清除,新内容不知。VoidGetAICmOry2(char*p,intn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 基础 试题