c 入門基礎知識

2021-08-02 20:34:14 字數 2281 閱讀 3075

名字空間

:namespace,即名字空間,是指

識別符號的各種可見範圍。c++

標準程式庫

中的所有識別符號都被定義於乙個名為std的namespace中。使用「using namespace」可以使得後面不需要每次指定名字空間。

1)名字

空間除了

系統定義

的名字空間之外,還可以自定義,定義

名字空間用關鍵字「namespace」,使用

名字空間時用作用域解釋符號「::」指定。

2)不指定名字空間的變數或函式都是當前名字

空間下的變數或函式。

3)不定義名字

空間的情況下,都屬於全域性名字

空間。同乙個名字

空間可以定義多次。

4)名字

空間可以一層層巢狀,指定時也得一層層地指定,這樣很不方便,一般用別名代替就方便多了。

5) 名字空間的名字也可以省略,稱之為「無名名字

空間」,無名名字

空間經常被使用,其作用是「內部可以引用,而外部不能引用」。

c++標準輸入輸出

cout是標準輸出流物件,《是標準操作符。

cin是標準輸入流物件,>>是標準操作符。

endl是換行操作符。

他們都屬於c++標準庫,所以都在std的名字空間裡面。

更詳細的c++輸出格式控制可檢視:

函式過載:指在同一作用域內,可以有一組具有相同函式名,不同引數列表(個數不同/型別不同)的函式,引數可同可不同,這組函式被稱為過載函式。

函式過載的作用:

1)試想如果沒有函式過載機制,如在c中,你必須要這樣去做:為這個print函式取不同的名字,如print_int、print_string。這裡還只是兩個的情況,如果是很多個的話,就需要為實現同乙個功能的函式取很多個名字,如加入列印long型、char*、各種型別的陣列等等。這樣做很不友好!

2)類的建構函式跟類名相同,也就是說:建構函式都同名。如果沒有函式過載機制,要想例項化不同的物件,那是相當的麻煩!

3)操作符過載,本質上就是函式過載,它大大豐富了已有操作符的含義,方便使用,如+可用於連線字串等!

#include using namespace std;

double add(int i = 0, double j = 0)//編譯後函式名變為_z3addid

double add(double i = 0, int j = 0)//編譯後函式名變為_z3adddi

int main()

//半預設引數

double add2(int i, int j = 0)

int main()

引用傳遞

void swap(int& left, int& right)

指標傳遞

void swap(int* left, int* right)

指標傳遞和引用傳遞在效率上要優於值傳遞(可用gettickcount驗證)。

注意:當不希望函式內容改變引數的值時,盡量在使用時加上const。

傳值做返回值與傳引用做返回值

int add(int a, int b)

int add(int a, int b)

int main()

{ int a = 1;

int b = 1;

int c = add(a, b);

cout<

通過除錯進入反彙編檢視

結論:(

重點記憶)

1. 不要返回乙個臨時變數的引用。

2. 如果返回物件出了當前函式的作用域依舊存在,則最好使用引用返回,因為這樣更高效

引用和指標的區別和聯絡

1. 引用只能在定義時初始化一次,之後不能改變指向其它變數(從一而終),指標變數的值可變。 

2. 引用必須指向有效的變數,指標可以為空。 

3. sizeof指標物件和引用物件的意義不一樣。sizeof引用得到的是所指向的變數的大小,而sizeof指標是物件位址的大小。 

4. 指標和引用自增(++)自減(--)意義不一樣。 

5. 相對而言,引用比指標更安全。

總結:指標比引用更靈活,但是也更危險。使用指標時一定要注意

檢查指標是否為空。指標所指的位址釋放以後最好置0,否則可能存在野指標問題

C 入門基礎知識

1.c 基本資料型別 整型int 字元型 char 浮點型 float double 邏輯性 bool 無型別 void 也稱內建型別 語言內部 已定義好的型別 非基本資料型別 陣列 type 指標 type 結構體 struct 聯合體 union 列舉 enum 類 class 這些即就是自定義...

C 入門基礎知識

一 命名空間 命名空間 實際上就是乙個由程式設計者命名的記憶體區域,程式設計者可以根據需要指定一些有名字的空間域,把一些全域性實體分別放在各個命名空間中,從而與其他全域性實體分隔開來。它相當於乙個更加靈活的檔案域 全域性域 可以用花括號把檔案的一部分括起來,並以關鍵字namespace開頭給它起乙個...

C 入門基礎知識

命名空間 命名空間,就是根據需要指定的一些有名字的記憶體區域。把一些全域性實體分別放在各個命名空間中,從而與全域性實體分隔開。如 namespace my namespace you 其中namespace是定義命名空間所必須寫的關鍵字,my和you是自己定義的命名空間的名字 可用任意合法的識別符號...