
C/C++
sylar_chen
专注系统运维MySQL数据库技术Linux与开源
展开
-
函数调用约定_stdcall和_cdecl
_cdecl 是C Declaration的缩写,表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。 _stdcall 是StandardCall的缩写,是C++的标准调用方式:所有参数从右到左依次入栈,如果是调用类成员的话,最后一个入栈的原创 2012-06-25 18:55:20 · 1249 阅读 · 2 评论 -
一个经典的面试题目:宏替换
题目: #include "stdio.h" void print() { * } void main() { } 在*号处加一段代码,显示出"hello,world". 思路:宏把main替换掉 #include void print() { #define main main(void){print();}\ void _main printf("H原创 2012-10-05 20:49:20 · 1098 阅读 · 0 评论 -
华为2013校园招聘上机试题(杭州)
1)杭州2012-9-1上机3个试题 /* 请在这里实现下列函数, c c++语法不限, 最后需要保证程序编译连接通过, 并生成test.exe文件. */ /* 相关宏定义及函数声明见'func.h'头文件 */ //#include "stdafx.h" #include #include #include #include //#include "fu原创 2012-09-19 20:23:47 · 1902 阅读 · 2 评论 -
c++ new的执行过程 与malloc的区别
. new的执行过程: (1)通过operator new申请内存 (2)使用placement new调用构造函数(简单类型忽略此步) (3)返回内存指针 2. new和malloc的比较: (1)new失败时会调用new_handler处理函数,malloc不会,失败时返回NULL (2)new能通过placement new自动调用对象的构造函数,malloc不会 (3转载 2012-09-20 15:56:32 · 1221 阅读 · 0 评论 -
C++指针与引用
★ 相同点: 1. 都是地址的概念; 指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。 ★ 区别: 1. 指针是一个实体,而引用仅是个别名; 2. 引用使用时无需解引用(*),指针需要解引用; 3. 引用只能在定义时被初始化一次,之后不可变;指针可变; 引用“从一而终” ^_^ 4. 引用没有 const,指针有 const,const 的指针不可变;转载 2012-10-11 22:02:09 · 694 阅读 · 0 评论 -
拷贝构造函数与赋值运算符
使用拷贝构函数的场合: 1、用一个对象初始化另外一个对象; 2、函数的参数是一个对象,且使用的是值传递方式,则会创建一个临时对象(变量),在调用函数时,会调用拷贝构造函数用实参对象初始化这个临时对象,因而改变的也是这个临时对象。因而函数参数是对象时,通常使用引用传参方式,避免产生临时对象和调用拷贝构造函数,减小程序运行时间和内存资源的开销。 3、函数返回值是一个对象,且是值传递方式。值传递同原创 2012-10-11 20:18:46 · 868 阅读 · 0 评论 -
构造函数调用构造函数
#include #include using namespace std; struct CLS { int m_i; CLS( int i ) : m_i(i){} CLS() { CLS(0); } }; int main() { CLS obj; cout转载 2012-10-17 10:21:03 · 894 阅读 · 0 评论 -
一个整数列,除了一个数字重复2次,所有其他数字都重复4次。O(n)时间O(1)空间找到那个只出现2次的。
一个整数列,除了一个数字重复2次,所有其他数字都重复4次。O(n)时间O(1)空间找到那个只出现2次的。 e.g. 5, 6, 1123,5, 5, 6, 6, 7, 6, 7, 7, 1123, 5,7 输出 1123; #include using namespace std; unsigned int foo(unsigned int a[], int原创 2012-11-28 14:20:58 · 2095 阅读 · 0 评论