姓名:張立斐 ? 學(xué)號(hào):19020700001? ?學(xué)院:電子工程學(xué)院?
轉(zhuǎn)自:https://blog.csdn.net/lvliang2017232003/article/details/85990362
【嵌牛導(dǎo)讀】C++學(xué)習(xí)
【嵌牛鼻子】C++
【嵌牛提問(wèn)】如何學(xué)習(xí)C++偏陪?
【嵌牛正文】
1.在包含自己的頭文件時(shí)趣钱,應(yīng)用“ ”而不是< >,如“coordin.h”; 文件名在“ ”中,編譯器將先在當(dāng)前工作目錄或源代碼目錄中查找曙痘。
? <iostream>, < >表示C++編譯器將在存儲(chǔ)標(biāo)準(zhǔn)頭文件的主機(jī)系統(tǒng)的文件系統(tǒng)中查找。
2. 同一個(gè)文件中只能將同一個(gè)頭文件包含1次
? #ifndef? COORDIN_H_
#define COORDIN_H_
....
#endif
3与斤、自動(dòng)存儲(chǔ)持續(xù)性:(自動(dòng)變量)在函數(shù)定義中聲明的變量(包含函數(shù)參數(shù))的存儲(chǔ)持續(xù)性為自動(dòng)的网持,它們?cè)诔绦蜷_(kāi)始執(zhí)行其所屬的函數(shù)或代碼塊時(shí)被創(chuàng)建,執(zhí)行完函數(shù)或代碼塊時(shí)竣稽,它們使用的內(nèi)存被釋放囱怕。自動(dòng)變量它們占的內(nèi)存稱(chēng)為棧,內(nèi)存釋放后毫别,值沒(méi)有被刪除娃弓,但不在被標(biāo)記,棧頂恢復(fù)到原來(lái)的位置岛宦。(代碼塊是指花括號(hào){ }內(nèi)包含的語(yǔ)句)
靜態(tài)存儲(chǔ)持續(xù)性:(靜態(tài)變量)在函數(shù)定義外定義的變量和使用關(guān)鍵字static定義的變量的存儲(chǔ)持續(xù)性為靜態(tài)的台丛,在程序的整個(gè)運(yùn)行過(guò)程中都存在。編譯器將分配固定的內(nèi)存來(lái)存儲(chǔ)靜態(tài)變量砾肺。
動(dòng)態(tài)存儲(chǔ)持續(xù)性:(動(dòng)態(tài)變量)用new運(yùn)算符分配的內(nèi)存一直都在挽霉,直到用delete運(yùn)算符將其釋放或程序結(jié)束,這種存儲(chǔ)持續(xù)性為動(dòng)態(tài)的变汪,有時(shí)稱(chēng)為自由存儲(chǔ)或堆侠坎。
4、C++變量的作用域有多種裙盾,
? C++函數(shù)的作用域可以是整個(gè)類(lèi)或整個(gè)名詞空間(包括全局)实胸,但不能是局部(不能再代碼塊內(nèi)定義函數(shù))劳闹。
5. int main()
{
int? tel;? ...... //tel #1
{ int? tel;.....? } //tel #2,? 在這可{ }代碼塊中tel #1被隱藏不可見(jiàn)焰宣,執(zhí)行完該代碼塊后tel #1重新可見(jiàn)斧散。
}
6. 關(guān)鍵字register:建議編譯器用CPU寄存器來(lái)存儲(chǔ)自動(dòng)變量请祖。
7.靜態(tài)持續(xù)變量的3種鏈接性
int global=1000;? //global在代碼塊外聲明放祟,有外部鏈接性郊艘,程序的其他文件可使用global僚祷;
? static int one_file=50l; //one_file在代碼塊外聲明,并用static限定符杂抽,有內(nèi)部鏈接性近顷,只能在包含上述代碼的文件中使用one_file
int main() { ...}
void fun1 (int n){
static int count=0;? //count在代碼塊內(nèi)聲明,并用static限定符生音,無(wú)鏈接性
int lama=0; //靜態(tài)變量count和自動(dòng)變量類(lèi)似宁否,只能在fun1 ()函數(shù)中使用。不同的是即使fun1 ()函數(shù)沒(méi)有執(zhí)行count也占內(nèi)存
}
void fun2 (int q){ ....}
8.未被初始化的靜態(tài)變量的所有位都被設(shè)置為0缀遍;
靜態(tài)變量的初始化分為:靜態(tài)初始化 和動(dòng)態(tài)初始化慕匠。靜態(tài)初始化(零初始化和常量表達(dá)式初始化)
靜態(tài)初始化:編譯后初始化 const double pi=4.0*atan(1.0);
9. 鏈接性為外部的變量稱(chēng)為外部變量。外部變量可以被程序中的多個(gè)文件使用域醇,但每個(gè)使用外部變量的文件都要聲明台谊;但變量只能定義1次。因此有C++的兩種聲明:
定義聲明:(定義)給變量分配存儲(chǔ)空間
引用聲明:(聲明)不分配存儲(chǔ)空間譬挚,使用關(guān)鍵字extern,不初始化锅铅,如果初始化了變?yōu)槎x,分配存儲(chǔ)空間
extern int blem;? //聲明减宣,blem在其他地方定義
extern char gr='z'; // 定義gr盐须,分配存儲(chǔ)空間? ? double up; //定義up
10. 用const全局變量鏈接性為內(nèi)部的。但可以用extern關(guān)鍵字來(lái)覆蓋默認(rèn)的內(nèi)部鏈接性漆腌。
extern const int state=34; //有外部鏈接性
11.所有函數(shù)的存儲(chǔ)持續(xù)性都是靜態(tài)的贼邓,默認(rèn)情況下,函數(shù)的鏈接性都是外部的闷尿∷芫叮可以用extern(也可不用)指出函數(shù)在另一個(gè)文件中定義,還可以用static將函數(shù)鏈接性設(shè)置為內(nèi)部填具,使之只能在一個(gè)文件中使用统舀。
12. 使用new初始化: int * ar=new int[4] {2,6,7,3} ;
用new和new[] 調(diào)用函數(shù):
void * operator new(std::size_t) ; //size_t是一個(gè)typedef,對(duì)應(yīng)于合適的整型。 釋放函數(shù):void operator delete(void *)
void * operator new[] (std::size_t) ; 釋放函數(shù):void operator delete [] (void *)
定位new運(yùn)算符:
char buffer[500];
p1=new (buffer) int[20] ;// 將Int數(shù)組放置在buffer劳景。
此時(shí)不需要delete [] p1; 因?yàn)閎uffer處于delte管轄之外誉简。
13.創(chuàng)建名稱(chēng)空間的關(guān)鍵詞 namespace, 任何名稱(chēng)空間中的名稱(chēng)不會(huì)與其他名稱(chēng)空間的名稱(chēng)沖突(不同名稱(chēng)空間可以用相同的名稱(chēng))
namespace Jack{ double pail; void fetch(); int pal; }
訪問(wèn)名稱(chēng)空間的名稱(chēng)用作用域解析運(yùn)算符 ::? 如Jack::pail=12.34;? 包含名稱(chēng)空間的名稱(chēng)Jack::pail稱(chēng)為限定名稱(chēng)
14.using聲明使特定的標(biāo)識(shí)符可用: using Jack::fetch;? 完成該聲明后,在有效區(qū)域可用fetch代替Jack::fetch
using編譯指令使整個(gè)名稱(chēng)空間可用:using namespace Jack枢泰;名稱(chēng)空間所有名稱(chēng)都可用描融,不用作用域解析運(yùn)算符 ::
15.未命名的名稱(chēng)空間可替代鏈接性為內(nèi)部的靜態(tài)變量:
函數(shù)外聲明:static int counts;
可寫(xiě)為函數(shù)外聲明 : namespace? ? { int counts; }
16.一個(gè)文件中調(diào)用average(3,6)函數(shù),返回兩個(gè)int參數(shù)的int平均值衡蚂,在同一個(gè)程序的另一個(gè)文件中調(diào)用,它返回返回兩個(gè)int參數(shù)的double平均值,實(shí)現(xiàn)方法:
在每個(gè)文件中包含單獨(dú)的靜態(tài)函數(shù)定義骏庸,或每個(gè)文件在未命名的名稱(chēng)空間(上面的15)中定義一個(gè)合適的average()函數(shù)
————————————————
版權(quán)聲明:本文為CSDN博主「lvliang2229」的原創(chuàng)文章毛甲,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明具被。
原文鏈接:https://blog.csdn.net/lvliang2017232003/article/details/85990362