摘要: 1.在C++程序中调用被C编译器编译后的函数,为什么还要加extern "C"?C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为void foo(int x,int y).该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生想_foo_int_int之类的名字。C++提供了C连接交换指定符号extern "C"解决名字匹配问题。2.头文件中的ifndef/define/endif是干什么用的?防止该头文件被重复引用。 阅读全文
posted @ 2012-11-02 16:48 吉大依恋 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 面试例题1:有两个变量a和b,不用"if"、"?:"、"switch"或其他判断语句,找出两个数中间比较大的。答案:int max=(a+b+abs(a-b))/2解析:若a>b,则(a+b+abs(a-b))/2为(a+b+a-b)/2=a. 若a<b,则(a+b+abs(a-b))/2为(a+b+b-a)/2=b.面试例题2:如何将a、b的值进行交换,并且不是有任何中间变量?方案一:a=a+b;b=a-b;a=a-b;但是这样做的缺点是如果a、b都是比较大的二个数,a=a+b时就会超界。方案二:a=a^b;b=a^b; 阅读全文
posted @ 2012-11-02 16:32 吉大依恋 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 用一个表达式,判断一个数X是否是2^N次方,不可用循环语句。解析:如果一个数是2^N,那么该数的二进制表示中只有一个1,其他位均为0.由于X和X-1做与运算,即X&(X-1)能消掉X中的一个1,若结果为0,则表示X中有且仅有一个1,那么X是2^N。故表达式为:!(X&(X-1))下面代码:int f(int x,int y){ return (x&y)+((x^y)>>1)}(729+271)=解析:这道题如果使用本办法来求解,就都转化成二进制然后按位与。但是这样的做法显然不是面试官所期待的。仔细观察一下题目,x&y是取相同的位与,这个的结果是x和y 阅读全文
posted @ 2012-11-02 16:11 吉大依恋 阅读(624) 评论(0) 推荐(0) 编辑
摘要: #includeusing namespace std;int main(){ unsigned char a=0xA5; unsigned char b=~a>>4+1; printf("b=%d\n",b); system("pause"); return 0;} ... 阅读全文
posted @ 2012-11-02 15:38 吉大依恋 阅读(367) 评论(0) 推荐(0) 编辑
摘要: int main(){ int b=3;int arr[]={6,7,8,9,10};int *ptr=arr;*(ptr++)+=123;printf("%d,%d\n",*ptr,*(++ptr));system("pause");return 0;}输出为 8,8解析:int *ptr=arr; 此时ptr指向第一个元素6*(ptr++)+=123;应为*ptr=*ptr+123;ptr++;此时ptr指向第二个元素,第一个元素变为129printf("%d,%d\n",*ptr,*(++ptr));从右到左运算,第一个算*(+ 阅读全文
posted @ 2012-11-02 11:58 吉大依恋 阅读(620) 评论(0) 推荐(0) 编辑
摘要: 指针L指向链表的哨兵节点,遍历链表,L改指向为所要求解链表的哨兵节点,遍历到当前元素时,将该元素插在哨兵节点和第一个真正节点之间,遍历结束时,于是就得到了反向链表。#includeusing namespace std;typedef struct Node{ int data; str... 阅读全文
posted @ 2012-10-30 21:06 吉大依恋 阅读(415) 评论(0) 推荐(0) 编辑
摘要: 校园招聘笔试题:int main(){ int a; char c; a=100; c='b'; printf("%d,%d,%d,%d,%d,%d\n",a,c,sizeof(a),sizeof(c),sizeof(&a),sizeof(&c)); return 0;} 运行结果... 阅读全文
posted @ 2012-10-29 23:14 吉大依恋 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 。4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放 5 阅读全文
posted @ 2012-10-29 23:06 吉大依恋 阅读(528) 评论(0) 推荐(0) 编辑
摘要: 校园招聘笔试题:int main(){ float f= 70.3f; printf("%f\n",f); getchar(); return 0;} 输出是:70.300003而不是70.300000为什么? 阅读全文
posted @ 2012-10-29 23:00 吉大依恋 阅读(150) 评论(0) 推荐(0) 编辑
摘要: #include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){int i;float x=0.001;float y;float t;float sum;float eps=0;printf("\n理论值:%f\n",x*1000000);sum=0;for(i=0;i<1000000;i++){sum+=x;}printf("\n累加值:%f\n",sum);sum=0;for(i=0;i<1000000;i++){y=x-eps;t=sum+y;eps=(t-sum)- 阅读全文
posted @ 2012-10-29 22:12 吉大依恋 阅读(170) 评论(0) 推荐(0) 编辑