c 對c語言上的增強

2021-08-09 07:55:09 字數 2498 閱讀 7127

#include"iostream"                

using namespace std;

//c語言中的變數都必須在作用域開始的位置定義!!

//c++中更強調語言的「實用性」,所有的變數都可以在需要使用時再定義。

#include using namespace std;

//c語言中的變數都必須在作用域開始的位置定義!!

//c++中更強調語言的「實用性」,所有的變數都可以在需要使用時再定義。

void main41()

乙個變數要是被定義為這種型別,他就會被儲存在通用暫存器中,所以儲存速度快。這種型別的好處就是: 如果你需要頻繁地使用該變數,可以避免多次從記憶體裡進行儲存,從而提高了執行效率.對編譯器只是一種提示,是不是register還看編譯器怎麼處理。 不是強制的手段現代編譯器的優化技術對變數是否存入暫存器已經做的很好了 所以對現代編譯器來說該關鍵字沒什麼用但在早期的編譯器中,還是有很大的用處的

//1register關鍵字的變化

register關鍵字請求「編譯器」將區域性變數儲存於暫存器中

c語言中無法取得register變數位址

在c++中依然支援register關鍵字

c++編譯器有自己的優化方式,不使用register也可能做優化

c++中可以取得register變數的位址

//2c++編譯器發現程式中需要取register變數的位址時,register對變數的宣告變得無效。

//3早期c語言編譯器不會對**進行優化,因此register變數是乙個很好的補充。

void main42()

system("pause");

}

變數檢測增強

/*

在c語言中,重複定義多個同名的全域性變數是合法的

在c++中,不允許定義多個同名的全域性變數

int g_var;

int g_var = 1;

c++直接拒絕這種二義性的做法。

*/int g_a = 100;

//int g_a ;

void main()

struct型別的加強:

c語言的struct定義了一組變數的集合,c編譯器並不認為這是一種新的型別

c++中的struct是乙個新型別的定義宣告

#include using namespace std;

//struct 關鍵字 class關鍵字 完成的功能是一樣的

//區別後面介紹 拋磚

class c1

;struct teacher

;void main51()

/*

c++中所有的變數和函式都必須有型別

c語言中的預設型別在c++中是不合法的

函式f的返回值是什麼型別,引數又是什麼型別?

函式g可以接受多少個引數?

*//*

//更換成.cpp試試

f(i)

g()int main(int argc, char *argv)

*/

在c語言中

intf(    );表示返回值為int,接受任意引數的函式

intf(void);表示返回值為int的無參函式

在c++中

intf(  );和int f(void)具有相同的意義,都表示返回值為int的無參函式

c++更加強調型別,任意的程式元素都必須顯示指明型別

新增bool型別關鍵字

c++中的布林型別

c++在c語言的基本型別系統之上增加了bool

c++中的bool可取的值只有true和false

理論上bool只占用乙個位元組,

如果多個bool變數定義在一起,可能會各佔乙個bit,這取決於編譯器的實現

true代表真值,編譯器內部用1來表示

false代表非真值,編譯器內部用0來表示

bool型別只有true(非0)和false(0)兩個值

c++編譯器會在賦值時將非0值轉換為true,0值轉換為false

*/

#include using namespace std;

void main()

總結:1)c語言返回變數的值 c++語言是返回變數本身

c語言中的三目運算子返回的是變數值,不能作為左值使用

c++中的三目運算子可直接返回變數本身,因此可以出現在程式的任何地方

2)注意:三目運算子可能返回的值中如果有乙個是常量值,則不能作為左值使用

(a < b ? 1 :b )= 30;

3)c語言如何支援類似c++的特性呢?

c 對c的增強

include using namespace std cout helloworld 命名空間下,可以放函式,變數,結構體,類.命名空間必須定義在全域性作用域下 命名空間可以巢狀命名空間 命名空間是開放的,可以隨時往原先的命名空間新增內容 無名,匿名命名空間 當寫了無名命名空間,相當於寫了stat...

c 對c的增強

本文主要介紹c 對c語言所增強的內容c語言中的變數都必須在作用域開始的位置進行定義 c 中強調語言的 實用性 所有的變數都可以在需要的時候進行定義 c語言的struct定義了一組變數的集合,c編譯器不認為這是一種資料型別 c 中的struct是乙個新型別的定義宣告 在c語言中 int f 表示返回值...

C 對C的擴充套件 增強

c 對c的擴充套件 1.雙冒號 作用域運算子 中對同乙個變數多次宣告,在 塊中使用時,區域性變數會將全域性變數隱藏。若在 塊使用變數前新增 表示為全域性變數。表示作用域運算子,如常見的std cout,std endl 等,表示cout和endl是std作用域下的識別符號。2.命名空間namespa...