面试相关
Arron11
这个作者很懒,什么都没留下…
展开
-
指针与引用的区别
1)非空。指针可以指向空对象,而引用不能。 2)合法性。在使用指针是总是会测试它是否非空,以防它不合法。而在使用引用时则不需要。 3)可修改性。指针可以被重新赋值指向新地址。但是引用则总是指向其初始化时的对象,不能更改。原创 2008-10-16 14:36:00 · 363 阅读 · 0 评论 -
About const
1.const有什么作用? 答:(1) 可以用const定义常量. (2)const可以修饰函数的参数,返回值.甚至函数体.被const修饰的都受到强制保护,可以预防意外的变动.能提高程序的健壮性.2.const与#define的区别 答:C++可以用const和#define定义常量,但(1)#define不能指定类型,它只是单纯的替换.而const有原创 2008-10-12 20:28:00 · 399 阅读 · 0 评论 -
在C++中调用被C编译器编译后的函数,为什么要加extern "C"
C++语言支持函数重载,C语言不支持函数重载,.函数被C++编译后在库中的名字与C语言不同.比如void foo(int x,int y).被C编译器编译后在库中的名字为_foo而C++编译器则会产生如_foo_int_int之类的名字.C++提供了C连接交换指定符号extern "C"来解决名字匹配问题.原创 2008-10-12 19:59:00 · 613 阅读 · 0 评论 -
选出两个数中较大者,不用if, ? : ,switch等判断语句.
int max = ((a+b) + abs(a-b))/2; //其中abs()为取绝对值.原创 2008-10-12 17:11:00 · 771 阅读 · 0 评论 -
#define
1. 写出一个宏,表示一年有多少秒.#define SECONDS_PER_YEAR (60*60*24*365)UL首先,#define支持常量运算..可以使用运算符来运算.其次,这个数很大,会使一个16位机的整形数溢出,加上UL(表示无符号长整形.) 2.写出一个宏,表示两个数最小的一个.#define MIN(a,b) ((a)注意:小心括号,结尾没有分号.原创 2008-10-12 20:20:00 · 534 阅读 · 0 评论 -
如何判断程序是由C编译程序编译的,还是由C++编译程序编译的.
C++编译时定义了_cplusplusC编译时定义了_STDC_原创 2008-10-12 20:05:00 · 439 阅读 · 0 评论 -
类型转换
unsigned int i =6; int j = -20; 如果执行 i + j ,会将int型转换为unsigned int ,所以-20会变成一个很大的数,i + j的结果不是-14. (当表达式存在有符号类型和无符号类型时,有符号类型会自动转换成无符号类型) 隐式转换原则: (1) 为防止精度损失,类型总是被提升为较宽原创 2008-10-12 16:22:00 · 594 阅读 · 0 评论 -
交换两个数的值,不采用中间变量。
交换a,b的值.方法1: a = a + b; b = a - b; a = a - b; 这样做的缺点是:如果a和b都是比较大的数,那么a+b会超界.方法2: a = a ^ b; b = a ^ b; a = a ^ b; 这样就不用担心超界的问题..其中^为异或运算符.原创 2008-10-12 19:54:00 · 430 阅读 · 0 评论 -
面试题--赋值
1.写出输出内容: #include int main(){ int x = 2,y,z; x *= (y=z=5);cout z = 3; x == (y=2);cout x = (y == z); cout x = (y & z);cout x = (y && z);cout y = 4; x = (y | z);cout x =原创 2008-10-12 15:46:00 · 524 阅读 · 0 评论 -
内联函数与宏定义
内联函数与普通函数相比,可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数直接被嵌到目标代码中。而宏定义只是一个简单的替换。内联函数要作参数类型的检查,这是与宏相比的优势。对函数加上inline,然后在调用此函数的时候不是调用,而是把代码直接写到里面去。所以避免了调用带来的开销,效率也就提高了。inline只用于两种情况: 1)一个函数不断地被重复调用。原创 2008-10-16 14:18:00 · 412 阅读 · 0 评论