c 入門基礎知識

2021-08-09 05:31:24 字數 4044 閱讀 6746

命名空間

剛開始接觸c++,我們會發現與c語言相比不光頭檔案有所不同,還會發現using namespce std;這句話,其實這就是c++的命名空間。

(1)概念

命名空間是為了防止名字衝突提供更加可控的機制。命名空間分割了全域性命名空間,其中每乙個命名空間是乙個作用域。由三部分組成,分別是namespace、空間名字和一系列由花括號括起來的宣告和定義。

(2)作用

是建立一些互相分隔的作用域,把一些全域性實體分隔開來。

(3)例子

命名空間和類就好比是資料夾和檔案的關係。命名空間就像是資料夾,它包含了若干個檔案,這樣可以將定義的很多類整齊地擺放起來,不僅可以避免命名衝突,還可以簡化對類成員的訪問。用花括號把檔案的一部分括起來, 並以關鍵字namespace開頭給它

起乙個名字:

namespace

name1

namespace

name2

name1: : a = 3;

name2: : a = 4;

::是作用域解析符

(4)優點如果在程式一開始不寫上using namespace std;那麼每次使用時就要這樣寫,這樣顯然比較麻煩。

注:endl相當於c語言中的\n.

#include

//using namespace std;

int main()

(5)巢狀使用

#include

using

namespace

std;

namespace you

}int main()

輸入輸出流流:資料之間的傳輸操作。

輸入輸出操作是由istream輸入流和ostream輸出流提供的,iostream是從這兩個類中派生的,允許雙向輸入和輸出。這個庫定義了3個標準流物件。

(1)cin:標準輸入的istream類物件,使使用者能夠從終端讀資料,預設是鍵盤。> > 是輸入操作符。

(2)cout:標準輸出的ostream類物件,使使用者能夠從終端寫資料,預設是螢幕。< < 是輸出操作符。

(3)cerr:標準輸出的ostream類物件,cerr輸出程式錯誤,預設是螢幕。

過載

(1)概念

所謂過載,其實就是「一物多用」。

函式過載,即在同一作用域類, 一組函式的函式名相同, 引數列表不同( 個數不同/型別不同) ,返回值可同可不同。不僅函式可以過載,運算子也可以過載,例如,運算子」<>」既可以作為位移運算子,又可以作為輸入操作符和輸出操作符。

(2)原因

那麼,為什麼c++支援過載呢?其原因在於函式名的修飾規則。從**的編譯到執行,在vc6.0或vs這種編譯器下,它是系統直接完成了翻譯與鏈結,直接生成了執行結果。

編譯器內部完成了翻譯部分:

1.預處理

2.編譯過程:將高階語言轉為組合語言。

3.彙編過程:組合語言轉為二進位制程式,生成目標檔案。

4.鏈結部分:所引用的資料鏈結進來,形成可執行程式。

比如乙個函式的宣告如下:

void function(int x,int y);

在c語言中,編譯器在編譯後在庫中的名字為_function

在c++中,編譯器在編譯後在庫中的名字為_function_int_int,在鏈結時是找名字進行鏈結,由於c++中它們的名字不一樣,所以就不會報錯。

(3)規則

① 函式名要相同;

② 引數個數不同,引數型別不同,引數順序不同,均可構成過載;

③ 返回值型別不同則不可以構成過載。

c++預設引數

(1)概念:在函式宣告或定義的時候給形參乙個預設的引數。這樣在呼叫該函式,如果沒有給實參,函式的這個形參就預設為這個值。

// 全預設引數

int add1 (int a = 0, int b = 0)

//半預設引數

int add2 (int a, int b = 0)

int main()

(2)使用規則預設引數賦值必須要連續且從右向左賦值;

不能把const的全域性變數作為預設值;

預設值必須是常量;

呼叫時你只能從最後乙個引數開始進行省略;

指標和引用

指標

學習c語言時已經知道,每乙個資料都是有位址的,通過位址就可以找到所需的記憶體空間。

(1)概念:乙個變數的位址稱為該變數的指標。

(2)使用方法:基型別 * 指標變數名

*const指標*(常指標)

int a=1;

const

int*p=&a;//定義了p為指向整形變數a的const指標變數

*p=15;//非法(不允許通過指標變數改變它指向的物件的值)

指標的作用和特點前面已經有了深入學習,在這裡不再加以詳細介紹。

引用

(1)概念:引用不是定義乙個新的變數, 而是給乙個已經定義的變數重新起乙個別名。

(2)使用方法:型別 &引用變數名 = 已定義過的變數名.

*普通引用*

int mian()

*const引用*

int main()

*不同型別變數間的引用*

想要用int型別的c來引用double型的b,首先先會將b變數放入乙個int型別臨時變數,再用const int型別的c來引用這個臨時變數,臨時變數具有常屬性,所以就需要有乙個const int型別的名字來完成這個引用。

(3)特點

1. 乙個變數可取多個別名

2. 引用必須初始化

3. 引用只能在初始化的時候引用一次, 不能改變為再引用其他的變數。

(4)作用

1.做引數

#include

using

namespace

std;

void swap(int&a,int&b)

int main()

void main()

{ int a=2,b=3;

int &c=add(a,b);

cout

<指標和引用的區別

(1)指標是儲存另乙個物件的位址的變數,而引用是物件的別名。

(2)指標未被初始化或被刪除時,應將null賦給它,但引用不能為空。

(3)sizeof指標物件和引用物件的意義不一樣,sizeof引用是指向變數的大小,sizeof指標是指物件位址的大小。

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

(5) 指標和引用自增(++)自減(–)意義不一樣。

(6) 相對而言, 引用比指標更安全。

C 入門基礎知識

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

c 入門基礎知識

名字空間 namespace,即名字空間,是指 識別符號的各種可見範圍。c 標準程式庫 中的所有識別符號都被定義於乙個名為std的namespace中。使用 using namespace 可以使得後面不需要每次指定名字空間。1 名字 空間除了 系統定義 的名字空間之外,還可以自定義,定義 名字空間...

C 入門基礎知識

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