C++ 面试经典题....... 好紧张哦要面试了分类: C++ 编程思想 2012-04-18 23:53 157 人阅读评论(0) 收藏举报面试题 7:一个指针可以是 volatile 吗可以,因为指针和普通变量一样,有时也有变化程序的不可控性。常见例:子中断服务子程序修改一个指向一个 buffer 的指针时,必须用 volatile 来修饰这个指针。说明:指针是一种普通的变量,从访问上没有什么不同于其他变量的特性。其保存的数值是个整型数据,和整型变量不同的是,这个整型数据指向的是一段内存地址。面试题 8: a和&a 有什么区别请写出以下代码的打印结果,主要目的是考察 a和&a 的区别。#include<> voidmain( void ){ inta[5]={1,2,3,4,5}; int*ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); return; }输出结果: 2, 5。注意:数组名 a可以作数组的首地址,而&a 是数组的指针。思考,将原式的 int *ptr=(int*)(&a+1); 改为 int *ptr=(int *)(a+1); 时输出结果将是什么呢? 面试题 9:简述 C、 C++ 程序编译的内存分配情况 C、 C++ 中内存分配方式可以分为三种: (1)从静态存储区域分配: 内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在。速度快、不容易出错,因为有系统会善后。例如全局变量, static 变量等。( 2)在栈上分配: 在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。( 3)从堆上分配: 即动态内存分配。程序在运行的时候用 malloc 或 new 申请任意大小的内存,程序员自己负责在何时用 free 或 delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活。如果在堆上分配了空间,就有责任回收它,否则运行的程序会出现内存泄漏,另外频繁地分配和释放不同大小的堆空间将会产生堆内碎块。一个 C、 C++ 程序编译时内存分为 5大存储区:堆区、栈区、全局区、文字常量区、程序代码区。 4面试题 10 :简述 strcpy 、 sprintf 与 memcpy 的区别三者主要有以下不同之处: (1)操作对象不同, strcpy 的两个操作对象均为字符串, sprintf 的操作源对象可以是多种数据类型,目的操作对象是字符串, memcpy 的两个对象就是两个任意可操作的内存地址,并不限于何种数据类型。( 2)执行效率不同, memcpy 最高, strcpy 次之, sprintf 的效率最低。(3)实现功能不同, strcpy 主要实现字符串变量间的拷贝, sprintf 主要实现其他数据类型格式到字符串的转化, memcpy 主要是内存块间的拷贝。说明: strcpy 、 sprintf 与 memcpy 都可以实现拷贝的功能,但是针对的对象不同, 根据实际需求,来选择合适的函数实现拷贝功能。面试题 11 :设置地址为 0x67a9 的整型变量的值为 0xaa66 int*ptr; ptr= (int *)0x67a9; *ptr= 0xaa66; 说明:这道题就是强制类型转换的典型例子,无论在什么平台地址长度和整型数据的长度是一样的,即一个整型数据可以强制转换成地址指针类型,只要有意义即可。面试题 12 :面向对象的三大特征面向对象的三大特征是封装性、继承性和多态性: q封装性:将客观事物抽象成类,每个类对自身的数据和方法实行 protection ( private , protected , public )。 q继承性:广义的继承有三种实现形式:实现继承(使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和方法,实现滞后到子类实现)。 q多态性:是将父类对象设置成为和一个或更多它的子对象相等的技术。用子类对象给父类对象赋值之后,父类对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。说明:面向对象的三个特征是实现面向对象技术的关键,每一个特征的相关技术都非常的复杂,程序员应该多看、多练。面试题 13 : C++ 的空类有哪些成员函数 q缺省构造函数。 q缺省拷贝构造函数。 q缺省析构函数。 q缺省赋值运算符。 q缺省取址运算符。 q缺省取址运算符 const 。注意:有些书上只是简单的介绍了前四个函数。没有提及后面这两个函数。但后面这两个函数也是空类的默认函数。另外需要注意的是,只有当实际使用这些函数的时候,编译器才会去定义它
C 面试经典题 来自淘豆网m.daumloan.com转载请标明出处.