1、51. 引用与指针有什么区别?答 、1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。3) 不存在指向空值的引用,但是存在指向空值的指针。52. 描述实时系统的基本特性答 、在特定期间内完毕特定的任务,实时性与可靠性。54. 全局变量和局部变量在内存中是否有区别?假如有,是什么区别?答 、全局变量储存在静态数据区,局部变量在堆栈中。55. 堆栈溢出一般是由什么因素导致的?答 、没有回收垃圾资源56. 什么函数不能声明为虚函数?答 构造函数(constructor)57. IP地址的编码分为哪俩部分?答 IP地址由两部分组成,网络号和主机号。58. 不能做
2、switch()的参数类型是:答 、switch的参数不能为实型。59. 如何引用一个已经定义过的全局变量?答 、可以用引用头文献的方式,也可以用extern关键字,假如用引用头文献方式来引用某个在头文献中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,假如你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错60. 对于一个频繁使用的短小函数,在C语言中应用什么实现,在C+中应用什么实现?答 、c用宏定义,c+用inline61. C+是不是类型安全的?答案:不是。两个不同类型的指针之间可以强制转换(用reinterpret cast)62.
3、当一个类A 中没有生命任何成员变量与成员函数,这时sizeof(A)的值是多少,请解释一下编译器为什么没有让它为零。答案:为1。举个反例,假如是零的话,声明一个class A10对象数组,而每一个对象占用的空间是零,这时就没办法区分A0,A1了。63. 简述数组与指针的区别?答:数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。(1)修改内容上的区别char a = “hello”;a0 = X;char *p = “world”; / 注意p 指向常量字符串p0 = X; / 编译器不能发现该错误,运营时错误(2) 用运算符sizeof 可以计算出
4、数组的容量(字节数)。sizeof(p),p 为指针得到的是一个指针变量的字节数,而不是p 所指的内存容量。64. C+函数中值的传递方式答:有三种方式:值传递、指针传递、引用传递65. 内存的分派方式答:分派方式有三种,1、 静态存储区,是在程序编译时就已经分派好的,在整个运营期间都存在,如全局变量、常量。2、 栈上分派,函数内的局部变量就是从这分派的,但分派的内存容易有限。3、 堆上分派,也称动态分派,如我们用new,malloc分派内存,用delete,free来释放的内存。66. extern“C”有什么作用?答:Extern “C”是由提供的一个连接互换指定符号,用于告诉这段代码是函
5、数。这是由于C+编译后库中函数名会变得很长,与C生成的不一致,导致不能直接调用C函数,加上extren “c”后,C+就能直接调用C函数了。Extern “C”重要使用正规DLL函数的引用和导出 和 在C+包含C函数或C头文献时使用。使用时在前面加上extern “c” 关键字即可。可以用一句话概括extern “C”这个声明的真实目的:实现C+与C及其它语言的混合编程。67. 用什么函数启动新进程、线程。答案:线程:CreateThread/AfxBeginThread等进程:CreateProcess等68. SendMessage和PostMessage有什么区别答案:SendMessa
6、ge是阻塞的,等消息被解决后,代码才干走到SendMessage的下一行。PostMessage是非阻塞的,不管消息是否已被解决,代码立即走到PostMessage的下一行。69. CMemoryState重要功能是什么答案:查看内存使用情况,解决内存泄露问题。70. #include 和 #include “filename.h” 有什么区别?答:对于#include ,编译器从标准库途径开始搜索 filename.h对于#include “filename.h” ,编译器从用户的工作途径开始搜索 filename.h71. 解决器标记#error的目的是什么?答:编译时输出一条错误信息,并
7、中止继续编译。72. #if!defined(AFX_HADE_H)#define(AFX_HADE_H)#endif作用?答:防止该头文献被反复引用。73. 在定义一个宏的时候要注意什么?答:定义部分的每个形参和整个表达式都必须用括号括起来,以避免不可预料的错误发生74. 数组在做函数实参的时候会转变为什么类型?答:数组在做实参时会变成指针类型。75. 系统会自动打开和关闭的3个标准的文献是?(1) 标准输入-键盘stdin(2) 标准输出-显示器stdout(3) 标准犯错输出-显示器stderr76. .在Win32下 char, int, float, double各占多少位?(1)
8、Char 占用8位(2) Int 占用32位(3) Float 占用32位(4) Double 占用64位77. strcpy()和memcpy()的区别?答:strcpy()和memcpy()都可以用来拷贝字符串,strcpy()拷贝以0结束,但memcpy()必须指定拷贝的长度。78. 说明define和const在语法和含义上有什么不同?答:(1) #define是C语法中定义符号变量的方法,符号常量只是用来表达一个值,在编译阶段符号就被值替换了,它没有类型;(2) Const是C+语法中定义常变量的方法,常变量具有变量特性,它具有类型,内存中存在以它命名的存储单元,可以用sizeof测
9、出长度。79. 说出字符常量和字符串常量的区别,并使用运算符sizeof计算有什么不用?答:字符常量是指单个字符,字符串常量以0结束,使用运算符sizeof计算多占一字节的存储空间。80. 简述全局变量的优缺陷?答:全局变量也称为外部变量,它是在函数外部定义的变量,它属于一个源程序文献,它保存上一次被修改后的值,便于数据共享,但不方便管理,易引起意想不到的错误。81. 总结static的应用和作用?答:(1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分派一次,因此其值在下次调用时仍维持上次的值;(2)在模块内的static全局变量可以被模块内所用函数访问
10、,但不能被模块外其它函数访问;(3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;(4)在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;(5)在类中的static成员函数属于整个类所拥有,这个函数不接受this指针,因而只能访问类的static成员变量。82. 总结const的应用和作用?答:(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,由于以后就没有机会再去改变它了;(2)对指针来说,可以指定指针自身为const,也可以指定指针所指的数据为const,或两
11、者同时指定为const;(3)在一个函数声明中,const可以修饰形参,表白它是一个输入参数,在函数内部不能改变其值;(4)对于类的成员函数,若指定其为const类型,则表白其是一个常函数,不能修改类的成员变量;(5)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。83. 什么是指针?谈谈你对指针的理解?答:指针是一个变量,该变量专门存放内存地址;指针变量的类型取决于其指向的数据类型,在所指数据类型前加*指针变量的特点是它可以访问所指向的内存。84. 什么是常指针,什么是指向常变量的指针?答:常指针的含义是该指针所指向的地址不能变,但该地址所指向的内容可以
12、变化,使用常指针可以保证我们的指针不能指向其它的变量,指向常变量的指针是指该指针的变量自身的地址可以变化,可以指向其它的变量,但是它所指的内容不可以被修改。指向长变量的指针定义,85. 函数指针和指针函数的区别?答:函数指针是指向一个函数入口的指针;指针函数是函数的返回值是一个指针类型。87. 简述Debug版本和Release版本的区别?答:Debug版本是调试版本,Release版本是发布给用户的最终非调试的版本,88. 指针的几种典型应用情况?答:int *pn;指针数组,每个元素均为指向整型数据的指针。int (*)pn;p为指向一维数组的指针,这个一维数组有n个整型数据。int *p
13、();函数带回指针,指针指向返回的值。int (*)p();-p为指向函数的指针。89. static函数与普通函数有什么区别?答:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝90. struct(结构) 和 union(联合)的区别?答:1. 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。2. 对于联合的不同成员赋值, 将会对其它成员重写, 本来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。91. class 和 struc
14、t 的区别?答:struct 的成员默认是公有的,而类的成员默认是私有的。92. 简述枚举类型?答:枚举方便一次定义一组常量,使用起来很方便;93. assert()的作用?答:ASSERT()是一个调试程序时经常使用的宏,在程序运营时它计算括号内的表达式,假如表达式为FALSE (0), 程序将报告错误,并终止执行。假如表达式不为0,则继续执行后面的语句。这个宏通常本来判断程序中是否出现了明显非法的数据,假如出现了终止程序以免导致严重后果,同时也便于查找错误。94. 局部变量和全局变量是否可以同名?答:能。局部会屏蔽全局。要用全局变量,需要使用”:”(域运算符)。95. 程序的局部变量存在于
15、(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中。96. 在什么时候使用常引用?答:假如既要运用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。97. 类的声明和实现的分开的好处?答:1. 起保护作用;2. 提高编译的效率。98. windows消息系统由哪几部分构成?答:由一下3部分组成:1. 消息队列:操作系统负责为进程维护一个消息队列,程序运营时不断从该消息队列中获取消息、解决消息;2. 消息循环:应用程序通过消息循环不断获取消息、解决消息。3. 消息解决:消息循环负责将消息派发到相关的窗口上使用关联的窗口过程函数进行解决。99. 什么是消息映射?答:消息映射就是让程序员指定MFC类(有消息解决能力的类)解决某个消息。然后由程序员完毕对该解决函数的编写,以实现消息解决功能。100. 什么是UDP和TCP的区别是什么?答:TCP的全称为传输控制协议。这种协议可以提供面向连接的、可靠的、点到点的通信。UDP全称为用户报文协议,它可以提供非连接的不可靠的点到多点的通信。用TCP还是UDP,那要看你的程序注重哪一个方面?可靠还是快速?