C 較C語言的變化

2021-09-26 10:31:59 字數 1401 閱讀 1858

在c++命名空間中,std是標準的命名空間。

企業規範:

g_stu: 以g_ 開頭的是全域性變數

stu_t: 以_t 結尾的代表typedef規則定義的別名

(1)自定義乙個命名空間:

namespace spacea  //命名空間定義結尾無分號(;)
(2)命名空間的使用

//法1:

using spacea::g_a;

//法2:

spacea::g_a

//法3:

using namespace spacea;

注:命名空間中支援巢狀命名空間,但此時引用具體變數時,必須引到變數定義的最內層命名空間為止。

2、c++中的變數隨用隨定義,但是c語言建議在函式開頭定義變數;

3、c++對struct進行了優化

struct student

;//c語言定義結構體變數

struct student s1;

//c++定義結構體變數

student s1;

注:c語言中相像c++中一樣簡便定義結構體變數需用到typedef

4、c++對函式返回值型別做嚴格的檢測

5、c++對引數個數進行嚴格匹配

6、c語言中無bool型別,c++中加入了bool型別(僅含有true 和 false 兩個值),佔取乙個位元組空間

7、c++對const進行了增強

注: c語言中的const是個冒牌貨,可以使用指標修改常變數的值;c++對這一點進行了優化

增強部分:

(1)c語言中,可以通過指標改變常變數的值(不安全)

(2)c++中,對常量做了功能增強,不可通過指標更改常量的值

注:在c++中增加了符號表,通過鍵值對建立了值與常量的對映,進而確保常量值不可變

8、三目運算子

左值:放在等號左邊,一般是可修改的變數;

右值:放在等號右邊,一般是常量或者表示式

三目運算子當左值:

//c語言中,需通過位址

*(a > b? &a : &b) = 50;

//c++中三目運算子可以直接當左值

(a > b? a : b) = 60;

9、列舉型別(大型專案中常用)——相當於批量定義巨集

enum season

;//定義列舉變數

enum season s = aut;

//在c語言中,列舉變數是乙個整型變數

需明確:若改變aut值為100,隨即win值就變更為101

注:列舉變數一般用於switch中,為case設定不同的條件

C 較C新功能

讀 c primer 第5版 c 11標準 一些記錄 1.變數初始化 列表初始化 c 語言定義了好幾種初始化形式,如 int units sold 0 int units sold int units sold int units sold 0 四種形式等價,但 和 不執行強制型別轉換,如 long...

從C語言過渡到C 之基本變化

說到c 和c語言的區別,大部分人都會想到物件導向和面向過程。然而這種說法並不準確。物件導向和面向過程指的是兩種不同的程式設計思想,而c 與c是兩種程式語言,難道c 就不能用於面向過程去解決問題嗎,當然可以。而物件導向的設計思想也可以用到c語言中去,我之前的文章就涉及過這方面的知識。我們這個系列就是要...

C 中各種集合模擬較

陣列 array 的不足 即 集合與陣列的區別 陣列是固定大小的,不能伸縮。雖然system.array.resize這個泛型方法可以重置陣列大小,但是該方法是重新建立新設定大小的陣列,用的是舊陣列的元素初始化。隨後以前的陣列就廢棄!而集合卻是可變長的。陣列要宣告元素的型別,集合類的元素型別卻是ob...