C和C++
C主要是應用在在驅動層,是程式導向的程式語言,對型別的定義不是很嚴格。C++主要是應用與應用層,是C語言的一個加強版,可以完全相容C語言,並且還有很多C語言不具備的特性,如,C++是一種物件導向的程式語言,C++的設計目標是:執行效率和開發效率的統一
- C++更加強調語言的實用性,可以在任意地方宣告變數
- C++中的register只是起到相容性的作用
- C++中的編譯器能夠更好的進行優化
struct關鍵字的加強:
C
typedef struct _tag_student Student;
struct _tag_student
{
const char* name;
int age;
}
C++
struct Student
{
const char* name;
int age;
};
int f() 和int f(void)有什麼區別
注意:C++中的所有的表示符都必須顯示的宣告型別,不允許預設型別的出現,但是在C語言中可以
C++中:
- int f()和int f(void)表示的是相同的意思,指的是定義了一個返回值是int的無引數的函式
C中: (在C中預設的引數型別和函式返回值型別都是int)
- int f() 指的是定義了一個返回值為int 函式引數個數為任意多個的函式
- int f(void) 指的是定義了一個返回值為int型別的無引數的函式
C和C++中的const的分析:
C
- 修飾的變數是隻讀,本質還是變數
- 修飾的區域性變數在棧上分配空間
- 修飾的全域性變數在只讀儲存區分配空間
- 只在編譯期有用,其他時間沒用
- 注意:const修飾的變數不是真的常量,他只是告訴編譯器該變數不能出現在賦值符號的左邊
C++
- 當碰到const識別符號時,在符號表中放入常量
- 編譯過程中若發現使用常量,則直接以符號表中的常量進行替換
- 編譯過程中若發現下述情況,則給對應常量分配記憶體空間
- 對const常量使用了extern
- 對const常量使用了&操作符
- C++編譯器雖然可能給const常量分配空間但是不會使用其儲存空間中的值
小結:
- 與C語言不同,C++中的const不是隻讀變數
- C++中的const是一個真正意義上的常量
- C++編譯器可能會為const常量分配空間
- C++完全相容C語言中const常量的語法特性