C 學習筆記 基礎知識部分(一)

2021-10-14 12:35:32 字數 4021 閱讀 6073

包含兩類檔案,分別是.cpp檔案(實現檔案)和.**件(標頭檔案)。

一、標頭檔案

為了防止同一標頭檔案在乙個專案中被重複包含,有兩種方式(可以同時使用)

(1)

#define head_h	

//定義巨集符號

#ifdef head_h

//判斷巨集符號是否已被定義,如果已經定義直接跳到#endif後面

/*內容

*/#endif

(2)

#pragma once

/*內容

*/

二、實現檔案

(1)#include命令

#include命令指示編譯程式將該命令所指的另乙個現實檔案嵌入到當前所在的現實檔案中。其語法格式有兩種:

#include

《檔名》

此時編譯器將在由編譯系統設定的子目錄中取搜尋該標頭檔案。

#include

"標頭檔案"

此時可在當前目錄和path中所帶的標頭檔案,或者是編譯器所在的路徑中尋找對應的標頭檔案。(適合自定義標頭檔案)

c++中沒有專門的輸入輸出語句,而是通過系統提供的輸入輸出流來實現該功能。

cout輸出

cout

;

cout語句執行的時候,資料會被順序放到輸出緩衝區中,直到輸出緩衝區已滿或者出現endl或者其他換行,會將輸出緩衝區中的資料一齊輸出,並清空緩衝區。下面我們來使用一下該語句:

#include

intmain()

當然,結果不如我們所願

error c2065: 「cout」: 未宣告的識別符號
這裡需要引申兩個概念

乙個是我們之前說過的輸入輸出流,這些在c++中統稱為「流類」。常用的幾個「流類」其關係如下:

cin和cout就是來自iostream標頭檔案。

cin對應於標準輸入流,用於從鍵盤讀取資料,也可以被重定向為從檔案中讀取資料。

cout對應於標準輸出流,用於向螢幕輸出資料,也可以被重定向為向檔案寫入資料。

所以,我們在使用cout的時候需要進行標頭檔案的宣告。

#include

第二個需要強調的就是std,std是個命名空間標示符,c++標準庫中的函式或者物件都是在命名空間std中定義的,所以我們要使用標準函式庫中的函式或物件都要使用std來限定。所以我們不能直接使用cout和endl,需要進行宣告。以使用cout為例,有以下幾種方式:

//直接在cout和endl前加std::,表示使用std空間中的cout和endl

#include

intmain()

//在主函式前宣告using std::cout;using std::endl;,表示使用std空間中的cout和endl

#include

using std::cout;

using std::endl;

intmain()

//在主函式前面加using namespace std;,表示使用std空間中的全部函式

#include

using

namespace std;

intmain()

如果我們自定義的變數中不涉及std空間中的函式名,推薦使用最後一種方法,這樣我們可以直接使用std裡面的其他函式而不需要一一進行宣告。使用vs程式設計,可能會出現輸出結果迅速消失的現象,這裡可以使用system(「pause」)來暫停。

#include

using

namespace std;

intmain()

除了使用endl進行換行,也可以使用\n進行換行

(1)cin輸入

cin>>變數1

>>變數2

;

乙個例子如下:

#include

using

namespace std;

intmain()

要注意cin後面是「>>」,它叫提取運算子,而cout後面是「<

當我們試著使用cin去輸出字串就會發現乙個問題,如果我們輸出的字串內部有空格,那麼cin只會讀取空格前面的內容,除了空格符,製表符、回車符都會有這種效果。

#include

using

namespace std;

intmain()

we are student

we請按任意鍵繼續.

..

這個時候需要使用另外兩種方式

(2)cin.get輸入

cin.get輸入有兩種語法格式:

cin.

get(字元變數)

這種方式只能輸入乙個字元,但是空格符等字元也會被輸入。

cin.

get(字元陣列,字元數目)

這種方式可以輸入多個字元,即可輸入字串,同樣空格符等字元也會被輸入。

我們看一下下面兩個例子

1.

#include

using

namespace std;

intmain()

ab d

ab d請按任意鍵繼續.

..

雖然實現了輸出空格的目標,但是太過於繁瑣,不適合字串長度太長或不知的情況。

2.

#include

using

namespace std;

intmain()

we are student

we are student請按任意鍵繼續.

..

這種方法就可以實現前面的目標。此外,還有以下方式

(3)cin.getline輸入

其語法格式為

cin.getline (字元陣列,字元數目)

;

具體方式與前面相似:

#include

using

namespace std;

intmain()

we are student

we are student請按任意鍵繼續.

..

此外,c語言中的printf和scanf也是可以用到c++中,後面再介紹幾種輸入輸出函式:

函式名功能

puts( )

輸出字串並換行

gets( )

讀取字串

putchar( )

輸出乙個字元

getch( )

讀入乙個字元但不顯示

getche( )

讀入乙個字元並顯示

getchar( )

讀入乙個字元並顯示(會顯示所有輸入的字元)

無必要區分後三個的特點,在一些互動式的系統設計中需要使用。為方便理解,可利用如下**進行測試(每次取消其中乙個注釋)

#include

#include

using

namespace std;

intmain()

這部分和c語言相同,單行注釋用//,多行注釋用/* */。一般情況下,源程式的有效注釋量必須在20%以上。

C 學習筆記(一)C 的基礎知識

2019.11.17記,從今天起進行c 和資料結構的學習,為期兩周 博主看的是中國大學mooc上北大的c 入門課,蠻推薦的,同樣還有翁愷的c 廢話不多說,咱們開始 一 有c到c c與c 最大的區別就是面向過程和物件導向,關於物件導向的具體資訊後面會降到 二 與c不同的基礎知識 一 引用 int i ...

C語言基礎知識部分總結一

一 字元資料的非格式化輸入 getchar 讀取使用者的按鍵資訊,他的返回值是使用者按鍵的ascii碼 工作原理 呼叫getchar時,程式等待從緩衝區中取出第乙個字元 使用者輸入的字元存放在鍵盤緩衝區,直到使用者按回車鍵為止 如果使用者輸入的不止乙個字元,那麼其他的字元將留在鍵盤緩衝區,等待後續的...

C 基礎知識學習筆記(二)

繼承 軟體復用 1.例項化乙個派生類物件時,先呼叫基類的建構函式。若基類的建構函式沒有引數或者沒有顯式定義基類的建構函式,定義派生類建構函式時不必顯式初始化基類成員,甚至無需定義建構函式,編譯器會自動呼叫派生類的預設建構函式,派生類的預設建構函式去呼叫基類的預設建構函式。派生類不能繼承基類的建構函式...