C的++基础面试题.docx

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C的基础面试题

const符号常量: (1)、const char *p (2)、char const *p (3)、char * const p 如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量。 如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。 析构函数和虚函数的用法和作用? 析构函数的作用是当对象生命期结束时释放对象所占用的资源。析构函数用法:析构函数是特殊的类成员函数它的名字和类名相同,没有返回值,没有参数不能随意调用也没有重载。只是在类对象生命期结束时有系统自动调用。虚函数用在继承中,当在派生类中需要重新定义基类的函数时需要在基类中将该函数声明为虚函数,作用为使程序支持动态联遍。 堆和栈的区别 栈(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。堆:一般由程序员分配释放,若不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式类似。 头文件的作用是什么? 通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取出相应的代码。头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。内存的分配方式有几种? 从静态存储区域分配。内存在程序编译的时候已经分配好,这块内存在程序的整个运行期间都存在。如全局变量。 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率高,但是分配的内存容量有限。 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活。BOOL、float、指针变量与”零值比较的if语句”。 BOOL:If(flag)或if(!flag) Float:const float EPSINON = 0.00001; If((x=.EPSINON)(x=EPSINON)) 说明:不可将浮点变量用”==”或”!=”与数字比较,应该设法转化成”=”或”=”此类形式。 指针*p:if(p==NULL) if(p!=NULL) 以下为Windows NT下的32位C++程序,请计算sizeof的值 Char str[] = “Hello”; Char *p = str; Int n = 10 请计算: Sizeof(str) = 6 Sizeof(p) = 4 Sizeof(n)=2 ?Void Func(char str[100]) { ?请计算:sizeof(str) = 4 } Void *p = malloc(100) 请计算:sizeof(p) = 4 #include filename.h和#include “filename.h”有什么区别 对于#include filename.h,编译器从标准库路径开始有哪些信誉好的足球投注网站filename.h,对于#include “filename.h”,编译器从用户的工作路径中开始有哪些信誉好的足球投注网站filename.h Const有什么用途 可以定义const常量 Const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。 在C++程序中调用被C编译器编译后的函数,为什么要加extern “C”? C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为:void fee(int x,inty); 该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。 C++提供了C连接交换指定符号extern “C”来解决名字匹配的问题。 内存思考题 Void GetMemory(char *p) { ?P = (char *)malloc(100); } Void Test(void) { ?Char *str = NULL; ?GetMemory(str); ?Strcpy(str,”hello world”); ?Printf(str); }//函数内的变量是独立于main的,对其改变不会影响main的变量 请问运行Test函数会有什么样的结果?程序会崩溃,因为GetMemory并不能传递动态内存,Test函数中的str一直是NULL。 Strycpy(

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档