1.c++命名空間
所謂namespace
,是指識別符號的各種可見範圍。c++
標準程式庫中的所有識別符號都被定義於乙個名為
std的
namespace中。
當使用時,相當於在
c中呼叫庫函式,使用的是全域性命名空間,也就是早期的
c++實現;
當使用的時候,該標頭檔案沒有定義全域性命名空間,必須使用
namespace std
;這樣才能正確使用
cout
。(或者使用std::cout)
2.實用性增強
c語言中的變數都必須在作用域開始的位置定義!!
c++中更強調語言的「實用性」,所有的變數都可以在需要使用時再定義
例如:
for(int i = 0;i<10;i++)
3.register關鍵字增強
register關鍵字請求「編譯器」將區域性變數儲存於暫存器中
c語言中無法取得
register
變數位址
在c++
中依然支援
register
關鍵字
c++編譯器有自己的優化方式,不使用
register
也可能做優化
c++中可以取得
register
變數的位址,
c++編譯器發現程式中需要取
register
變數的位址時,
register
對變數的宣告變得無效。
int main()
4.變數檢測增強 在c
語言中,重複定義多個同名的全域性變數是合法的
在c++
中,不允許定義多個同名的全域性變數
int g_var;
int g_var = 1;
int main(int argc, char *argv)
以上**在c語言中能編譯通過,而在c++中不能
5.struct型別的加強c語言的struct定義了一組變數的集合,c編譯器並不認為這是一種新的型別c++中的struct是乙個新型別的定義宣告
struct student
;int main(int argc, char *argv)
;student s2 = ;
return 0;
}
6.c++中的所有變數和函式都必須要有型別c語言中的預設型別在c++中是不合法的,下面這個**在c++編譯器中不能編譯通過
f(i)
g()int main(int argc, char *argv)
在c語言中
int f( );表示返回值為int,接受任意引數的函式
int f(void);表示返回值為int的無參函式
在c++中
int f( );和int f(void)具有相同的意義,都表示返回值為int的無參函式
c++更加強調型別,任意的程式元素都必須顯示指明型別
7.新增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
8.三目運算子功能增強
int main()
c語言返回變數的值 c++語言是返回變數本身
c語言中的三目運算子返回的是變數值,不能作為左值使用
c++中的三目運算子可直接返回變數本身,因此可以出現在程式的任何地方
注意:三目運算子可能返回的值中如果有乙個是常量值,則不能作為左值使用(例如: ( a < b ? 1 : b)= 30 ).
那麼怎樣讓c中的三目運演算法當左值呢?
*(a < b ? &a : &b) = 30;
9.c/c++中的const
int main()
以上**在c和c++執行的結果是不一樣的
c語言中
const
變數是唯讀變數,有自己的儲存空間
c++中的
const
修飾的,是乙個真正的常量,而不是
c中變數(唯讀)。在
const
修飾的常量編譯期間,就已經確定下來了。
c++中的
const
常量可能分配儲存空間,
也可能不分配儲存空間
當const
常量為全域性,並且需要在其它檔案中使用,會分配儲存空間
當使用&
操作符,取
const
常量的位址時,會分配儲存空間
當const int &a = 10; const
修飾引用時,也會分配儲存空間
const和#define的區別
對比加深
c++中的
const
常量類似於巨集定義
const int c = 5; ≈
#define c 5
c++中的
const
常量與巨集定義不同
const常量是由編譯器處理的,提供型別檢查和作用域檢查
巨集定義由預處理器處理,單純的文字替換
c 學習筆記一
2007 9 4 引用,該型別的變數不直接儲存所包含的值,而是指向它所要儲存的值。c 的引用型別有四種 類 代表 陣列 介面。一下 表示類b從類 a中繼承 class a class b a 類的成員有以下型別 成員常量,代表與類相關聯的常量值。域,即類中的變數。成員方法,複雜執行類中的計算和其它操...
C 學習筆記 一
c 學習筆記 一 by heiyeluren 學習 visual c 入門經典 的個人筆記。1.函式的過載 函式過載提供了建立多個同名函式的能力。我們確定乙個函式是獨一無二的方法是通過三項方法,分別是是通過返回值的型別,函式名,函式 引數等三項內容。我們函式過載主要就是使用不同的引數來確定使用那個函...
C 學習筆記一
c中的記憶體分配方式 1.靜態儲存區域 在程式開始之前就可以分配,且在程式執行過程中始終存在 2.棧 儲存單元在其上分配,單元外自動釋放,多見內建 資料型別於此 3.堆 動態分配,即程式執行時分配此部分記憶體.由使用者分配且要負責釋放.生存期由使用者決定,不受範圍限制 stdlib.h提供mallo...