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不會計入其中