程序员面试宝典二
来源:互联网 发布:出租车gps轨迹数据集 编辑:程序博客网 时间:2024/05/29 21:29
1、下面程序结果
unsigned int a=0xfffffff7;unsigned char i=(unsigned char)a; //发生截断 char *b=(char *)&a; //指针转换printf("%08x,%08x\n",i,*b); //000000f7,fffffff7
int f(int x,int y){return (x&y)+((x^y)>>1); //&操作是取相同的位,结果是相同位两者和的一半,^操作是取不同的位,右移相当于除以2,结果是不同位两者和的一半}
2、C++调用被C编译器编译后的函数,为什么要加上extern "C"?
C++支持函数重载,C语言不支持函数重载。函数被C++编译之后在库中的名字和C语言不同。例如函数原型为void foo(int x,int y),该函数被C编译器编译后在库中的名字为_foo,而C++编译器编译之后则会产生像_foo_int_int之类的名字。
3、用一个宏定义求一个结构体struc里某个变量相对struc的偏移量
#include "stdafx.h"#include "iostream.h"#include "stdlib.h"#define PARAM_OFFSET(struc, Field) ((size_t)&(((struc *)0)->Field)) //结构体struc中的某个变量相对struc的偏移量,size_t便于移植struct testStruct{ char a;short b;int c;char path[1024];int d;}; int main(int argc, char* argv[]){ printf("a's offset:%d, b's offset:%d,c's offset:%d,path's offset:%d,c's d:%d\n", PARAM_OFFSET(testStruct,a), //0 PARAM_OFFSET(testStruct,b), //2 (char a) PARAM_OFFSET(testStruct,c), //4 (2 + short b) PARAM_OFFSET(testStruct,path), //8 (4 + int c) PARAM_OFFSET(testStruct,d)); //1032 (8 + char path[1024])printf("size is : %d\n",sizeof(testStruct)); //4+4+1024+4=1036return 0;}
4、以空间代价换取时间
1)计数排序
2)inline函数
5、空类的大小是1,单一继承、多重继承的空类大小都是1,具体原因没有查清楚。
虚继承的空类因为涉及虚表,大小为4。
6、分析程序运行结果
#include "stdafx.h"#include "iostream.h"#include "stdlib.h"class A{public:A(){m_a=1;m_b=2;}void func(){printf("%d%d\n",m_a,m_b);}private:int m_a;int m_b;};class B{public:B(){m_c=3;}void func(){printf("%d\n",m_c);}private:int m_c;};int main(int argc, char* argv[]){ A a;B *b=(B*)(&a); //野蛮的指针转换,然后使得b的成员变量m_c=m_a=1b->func(); //1return 0;}
7、空指针和迷途指针
当delete一个指针p时,仅仅是释放该指针所指向的内存空间,但指针本身依然存在,这时它就是一个迷途指针。
当使用p=0后,迷途指针就变成了空指针。
使用迷途指针或者空指针都是非法的,而且有可能造成程序的崩溃,但是空指针造成的崩溃相对于迷途指针的崩溃是一种可预料的崩溃。
8、
- 程序员面试宝典二
- 《程序员面试宝典(二)》笔记
- 程序员面试宝典:点滴记录二
- c++程序员面试宝典笔记(二)
- 程序员面试宝典知识点总结(二)
- java程序员面试宝典题目<二>
- 程序员面试宝典
- 程序员面试宝典A
- Java程序员面试宝典
- Java程序员面试宝典
- java程序员面试宝典
- JAVA程序员面试宝典
- Java程序员面试宝典
- 程序员面试宝典
- 《程序员面试宝典》摘记
- 程序员面试宝典
- 程序员面试宝典总结
- 程序员面试宝典笔记
- BS与CS的联系与区别
- BI入门经典 (转)
- 数据完整性
- 延迟加载DLL 的意义
- dom4j 读取xml 数据库配置文件 dataconfig
- 程序员面试宝典二
- android异常 Permission denied (maybe missing INTERNET permission)
- UDP编程
- strstr在vc runtime 里的实现以及测试代码
- css控制固定表头,兼容行列合并
- 1) Loadrunner message函数详细分析
- Http学习之使用HttpURLConnection发送post和get请求 .
- 关于软件外包项目管理的想法
- VIM keyboard shortcuts