C 對C的拓展

2021-08-27 18:22:44 字數 1798 閱讀 5991

目錄

一、bool型別關鍵字

二、引用

三、輸入輸出

四、函式引數

五、string類

六、左值

c++在c語言的基礎型別上新增了布林型別(bool),bool可取的值有兩個:true、false,占用乙個位元組。true代表真值,編譯器內部用1來表示;false代表非真值,編譯器內部用0來表示。

#include using namespace std;

int main()

輸出:

bool[true] 值:1

bool占用位元組數:1

修改bool[true]值後,值:1

在c++中才引入引用型別,它是變數的別名,宣告方法:型別識別符號 &引用名 = 目標變數名,表示式用的&不代表取變數的位址,而是用來表示該變數是引用型別的變數,定義乙個引用時,一定要對其進行初始化。

#include using namespace std;

void func(int &arg)

int main()

輸出:

a = 13, b = 13

before func c = 12

after func c = 14

c語言中輸入輸出是標準的函式scanf()和printf(),而c++中使用流物件作為輸入輸出,其中cin是標準輸入流物件,即istream類的物件;cout是標準輸出流的物件,即ostream類的物件;cerr是標準錯誤輸出流的物件,也是ostream 類的物件。

c語言中,函式定義時沒有給定引數或返回型別,預設使用int型別,如:int func()表示接收任意引數的函式;func()表示返回值int的函式。但c++中,所有的識別符號必須顯示宣告型別,否則無法通過編譯;其次c++允許函式設定引數預設值。

#include int func1() 

func2(void)

int main()

輸出:

func1 return[1]

func2 return[2]

#include using namespace std;

int func1()

int func2(int a, int b = 2)

int main()

輸出:

func1 return[1]

func2 use default param a = 1, b = 2

func2 use set param a = 1, b = 3

c語言是靜態弱型別語言,型別在編譯時需要確定,對於string型別,由於它的大小無法在編譯時確定,所以c語言中沒有string型別,通過char *和char 可以定義字串。c++中的string類是乙個模板類,位於std命名空間中,使用string類,標頭檔案必須包含。

#include #include using namespace std;

int main()

輸出:

mystr:abc, size:3
左值一定可以作為右值,但右值不一定可以作為左值,c語言中表示式不能作為左值,而c++中只要能建立普通引用的表示式都可以作為左值。

a > b ? a : b = 10; // 三目運算子返回變數本身,可以作左值

C 對C的函式拓展

一,內聯函式 1.內聯函式的概念 c 中的const常量可以用來代替巨集常數的定義,例如 用const int a 10來替換 define a 10。那麼c 中是否有什麼解決方案來替代巨集 片段呢?c 中推薦使用內聯函式代替巨集 片段,c 中使用inline關鍵字宣告內聯函式。注意 內聯函式宣告時...

c 對c的拓展 增強

一 新增bool型別關鍵字 c中bool型別需要新增stdbool.h標頭檔案,c 則可直接使用 void test bool a true c 可直接定義而c需新增標頭檔案 true和false可直接用做常量使用 二 三目運算子 c 中返回的可以是個變數,但c語言中返回的表示式的值是乙個常量 vo...

C 對C的加強和拓展

1.命名空間。c 標準庫 include 命名空間為 std namespace 是c 中的關鍵字,用來定義乙個命名空間,語法格式為 namespace name name是命名空間的名字,它裡面可以包含變數 函式 類 typedef define 等,最後由包圍,且命名空間可以巢狀。以下是乙個例項...