P19:包含頭文件的語法
包含來自標(biāo)準(zhǔn)庫的頭文件時沪么,使用< >
捅位,而對于非標(biāo)準(zhǔn)庫頭文件腔召,使用“ ”
杆查。如:
#include <iostream>
#include "myheader.h"
P19:文件重定向
$ Myapp <infile> outfile
上述命令從infile文件中讀取輸入(cin
),將輸出結(jié)果寫到outfile文件中(cout
)臀蛛。
P32:char類型
盡量不要使用char
類型亲桦,因為在不同的機器上崖蜜,char
有可能為有符號型,也有可能為無符號型客峭。應(yīng)當(dāng)明確使用signed char
或unsigned char
豫领。
P34:有符號類型與無符號類型
表達(dá)式中既有有符號類型,又有無符號類型時舔琅,有符號類型會自動轉(zhuǎn)化為無符號類型等恐,導(dǎo)致錯誤,如:
int i=-1;
unsigned u=10;
cout<<i+u<<endl;//結(jié)果錯誤备蚓,i會轉(zhuǎn)化為無符號類型课蔬,結(jié)果為4294967264
int a=-1,b=1;
cout<<a*b<<endl;//結(jié)果正確:-1
unsigned int c=1;
cout<<a*c<<endl;//結(jié)果錯誤:4294967295
P35:
0開頭表示八進(jìn)制,0x開頭表示十六進(jìn)制郊尝,0b開頭表示二進(jìn)制二跋。如:
int a=034;//八進(jìn)制
int b=0xAF;//十六進(jìn)制
int c=0b0111011;//二進(jìn)制
P41:變量的聲明與定義
聲明使得名字為程序所知;如果想聲明一個變量而非定義它虚循,添加關(guān)鍵字extern
同欠。
extern int i;//聲明i而非定義i
extern int j=10;//即使添加了extern關(guān)鍵字样傍,因為進(jìn)行了初始化横缔,所以其實也是定義了j
int k=0;//聲明且定義且初始化了變量k
int l;//聲明且定義了變量l,單位初始化它
P44:變量的作用域
int reused=42;//reused擁有全局的作用域
using namespace std
int main(){
cout<<reused<<endl;//輸出全局變量 reused=42
int reused=10;//定義了局部變量衫哥,覆蓋了全局變量
cout<<reused<<endl;//輸出局部變量 reused=10
//因為此時的全局作用域本身沒有名字茎刚,所以當(dāng)作用域操作符左側(cè)為空時,向全局作用域發(fā)出請求獲取全局變量reused
cout<<::reused<<endl;//通過作用域操作符顯式地訪問全局變量 reused=42
P50:void* 指針
void* 指針是一種特殊的指針類型撤逢,可用于存放任意對象的地址膛锭。一個void*指針存放著一個地址,但是我們對改地址中到底是個什么類型的對象并不了解蚊荣。
P52:指向指針的引用
int *p;//p是一個int類型的指針
int *&r=p;//r是一個對指針p的引用
要理解r的類型是什么初狰,最簡單的辦法是從右向左閱讀r的定義。
- 離變量名最近的符號(此例中是*&中的&)對變量的類型有最直接的影響互例,因此r是一個引用奢入。
- 聲明符的其余部分用于確定r引用的類型是什么,此例中的*符號說明r引用的是一個指針媳叨。
- 最后腥光,聲明的基本數(shù)據(jù)類型部分指出r引用的是一個int類型的指針。