1. 不稳定的排序:
选择,快速,希尔,堆排序不稳定
2. 继承性是面向对象语言不同于其它语言之处(而不是多态)
3. test* p=new test();
p=NULL;
p->hello(); //只要是test 类型的指针就能调用test 的成员函数前提是函数里没有涉及到成员变量。
4. printf("%d, %d\n", *str, *(++str));
函数的参数是从右向左运算的 所以两个str指向的其实是相同的地方
5. unsigned char a=-0xA5;
unsigned cahr b=~a>>4;
因为4 编译器在计算~a>>4的时候会先把a转为int 原理: 低精度转为高精度
>>运算符的优先级高于~ 所以是FFFFFFF5给了uchar b
b=0xF5
6. 在函数中
char str[] = "hello" 和 char *str = "hello"的区别
前者是放在栈中的数组, 后者是常量 放在全局区 所以前者函数返回会有问题后者不会 可以改为 static char str[] = ... 就不会有问题了
6. float a=1.0f
float b=0.0f
cout << (int)a == (int&)a //false (int&)a相当于将该浮点数地址开始的sizeof(int)个字节当做int输出 而(int)a=1
cout << (int)b == (int&)b //b就都是0了 ??
7. extern "C"
在C++中调用被C编译器编译后的函数 C++支持重载 编译器编译后的库函数名为类似_foo_int_int的这种 而C编译后位_foo这种 为解决名字匹配问题 C++ 提供交换指定符号extern "C"
8. (60*60*24*365)UL
无符号长整型
9. sizeof("ab\n") = 4
就算是'\n'后面也得有'\0'来结尾
10. sizeof计算的是栈中内存的大小 所以static不会计入其中