thinking in C++ 讀書日誌(三)
第三章
在推薦“看點”之前先提出一個疑問:
有沒有人對起分段編譯作用得make和makefile比較瞭解,我看了半天也沒看懂。它們到底是怎樣作用與編譯過程的?又是為什麼能作用於編譯過程呢?有誰懂請一定給我留言啊!我的qq:455126537,多謝了先!
主要推薦看點如下:
1.C++中的“實時定義變數”
知道嗎,其實在c中:for(int i=1;i<=10;i++){;}是會出錯的哦。
2.全域性變數、區域性變數、靜態變數、外部變數
全域性變數與外部變數是有一定聯絡的;而靜態變數與全域性變數是不同的;區域性變數作用域的定義。這些都是很重要的。
3.常量const與預處理巨集#define
常量的管理,c++中const要比#define優越;而define則有其他的獨特價值(#define PR(E) cout<<#E<<”: ”<<E<<endl;)不懂的話就快看書吧!^_^
4. c++的顯式型別轉換
主要是它:static_cast<TYPE>(VARIABLE);它比(TYPE)VARIABLE 只有“視覺上”的好處,不過仍推薦用它代替老方法。書上寫有詳細原因。
5. main()的兩個引數 int, char *[]
常寫作:main(int argc,char *argv[])
其作用是接收“命令列下”傳遞的引數。比如我在dos下寫的:format c: -q 中的”c:”和“-q”,它預設的argv[0]存的是“format”。推薦看一下,很有意思的。
6. <cstdlib>中的atoi,atof,atol函式
是字元型->整型(/浮點型/長整型)的函式,例:atoi(argv[1]);
7. assert巨集 斷言
它保證引數表示式的正確性,否則則退出程式。作用類似<cstdlib>中的exit();但它可以彈出錯誤對話方塊並給出錯誤的位置。例如:assert(GO==true);//當GO不為true時彈出錯誤對話方塊。
8. 函式指標
指向函式的指標。宣告形如:void (*pf1)(); 不常用,但應該瞭解。
9. 位運算子
&,<<,等這些運算子不僅效率高,而且可以做很多事的。要想編出高效率的程式,對它們一定要理解。