2012年7月1日

程序员面试宝典

摘要: 一:宏定义面试例题1:如何用一个宏定义FIND求一个结构体CTYPE里某个变量CNUM相对了CTYPE的编移量 ?如:?stuct student { int a; char b[20]; double ccc; }则:FIND(student,a); //等于0FIND(student,b); //等于4Answer: #define FIND(struc, e) (size_t)&(((struc*)0)->e)(struc*)0 //表示将常量0强制转化为struc *型指针所指向的地址&(((struc*)0)->e) /*表示取结构体指针(struc*)0 阅读全文

posted @ 2012-07-01 20:52 _Clarence 阅读(198) 评论(0) 推荐(0) 编辑

C++中有了malloc/free,为什么还需要new/delete?

摘要: C++中有了malloc/free,为什么还需要new/delete?malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够构把造函数和析构函数的任务强加于malloc/free。因此c++语言需要一个能完成内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。n 阅读全文

posted @ 2012-07-01 20:51 _Clarence 阅读(303) 评论(0) 推荐(0) 编辑

导航