摘要: 例题1:class A {public: A() { m_a = 1; m_b = 2; } void fun() { printf("%d%d\n", m_a, m_b); }private: int m_a; int m_b;};class B {public: B() { m_c = 3; } void fun() { printf("%d\n", m_c); }private: int m_c;};int main() { A a; B *pb = (B*) (&a); pb->fun(); return 0;}考察内存偏移, 答案 阅读全文
posted @ 2014-04-01 23:49 周卓 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 指针和引用的区别非空区别. 在任何情况下, 都不能使用指向空值的引用, 一个引用必须总是指向某个对象. 而指针, 可为 NULL 合法性区别. 在使用引用前不需要测试其合法性. 相反, 指针应总是被测试, 防止其为空. 可修改区别. 指针可以被重新赋值, 而引用总是在初始化时被指定对象, 以后不得修改. const 常量赋值时, 必须同时初始化. effective C++ 讲到 const 声明和初始化的 item2 没太看懂例题1: 1 // p 只是一个副本2 void getMemory(char *p, int num) {3 p = (char *)malloc(sizeo... 阅读全文
posted @ 2014-04-01 20:27 周卓 阅读(161) 评论(0) 推荐(0) 编辑
摘要: x 表示 16 进制08 表示显示出 8 个字符int main() { unsigned int a = 0xfffffff7; unsigned char i = (unsigned char) a; char *b = (char *)&a; printf("%x, %x\n", i, *b); printf("%08x, %08x\n", i, *b); return 0;}f7, fffffff7000000f7, fffffff7 阅读全文
posted @ 2014-04-01 20:20 周卓 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 参数的入栈顺序和编译器的具体实现有关, 我在 G++ 下测试, 入栈是从右向左int f(int &a, int &b) { return a +b;}int main() { int b = 3; int arr[] = {6, 7, 8, 9, 10}; int *ptr = arr; *(ptr++) += 123; printf("%d, %d\n", *ptr, *(++ptr)); int a = 10; cout << f(a, ++a) << endl; return 0;}返回 8, 8; 22 阅读全文
posted @ 2014-04-01 19:30 周卓 阅读(180) 评论(0) 推荐(0) 编辑