c到c 的公升級

2021-06-20 08:07:18 字數 2170 閱讀 7006

c++繼承了c的所有特性,c++在c的基礎上同時增加了許多新的語法和特性,c++的目標是實現執行效率與開發效率相統一。

c++中更加強調語言的實用性,所有變數可在使用的時候再定義。例如;

#include

int main(int argc, char *argv)

}    

printf("c = %d\n", c);

printf("end...\n");

printf("press enter to continue ...");

getchar();

return 0;

}而在c語言中,變數的宣告必須在作用域的開始處,否則不能通過編譯器。編譯報錯。

register關鍵字的變化,在c語言中,register關鍵字請求編譯器將區域性變數儲存於暫存器中,c語言中無法取得register變數位址。在c++中依然支援register關鍵字,c++編譯器有自己的優化方式,不用register也可做優化,c++中可以取得register變數的位址。當c++編譯器發現需要使用register變數的位址時,register變數的宣告開始無效。早期的c編譯器不能自己實現對**的優化,因此register變數時乙個很好的補充。例如:

#include

int main(int argc, char *argv)

在c語言中,重複定義多個同名全域性變數是允許的。c語言中多個同名全域性變數共同鏈結到全域性資料區的同一片位址空間上。而在c++中,不允許定義多個同名的全域性變數。c++直接拒絕這種二義性的作法。例如:

#include

int g_var;

int g_var = 1;

int main(int argc, char *argv)

c++編譯器對const常量的處理,當碰見常量宣告時將常量值放入符號表中,若在編譯過程中發現使用了常量,則直接以符號表中的值替換即可。編譯過程中若發現對const常量進行了extern或&操作,那麼就要為對應的常量分配儲存空間。c++編譯器雖然可能為常量分配儲存空間,但不會使用其中的值。

c語言中const變數是唯讀變數,有自己的儲存空間。c++的const常量可能分配儲存空間,一是當全域性變數extern使用時,二是使用&獲取它的位址的時候。

c++中的const常量類似於c語言中的巨集定義,不同的是,c語言中巨集定義實由預處理器處理,單純的文字替換。而c++中的const常量則是在編譯器中處理,包括型別檢查和作用域檢查,更加安全。例如:

#include

int main(int argc, char *argv)

;int i = 0;

for(i=0; i

printf("press enter to continue ...");

getchar();

return 0;

}//c++中的const常量

#include

void f()

void g()

int main(int argc, char *argv)

//c++中的const常量和巨集定義的區別

c語言中的struct型別只是定義了一組變數的集合,c語言並不認為這是一種新的型別。而在c++中struct則被認為為一種新的型別。

#include

struct student

;int main(int argc, char *argv)

;student s2 = ;

printf("press enter to continue ...");

getchar();

return 0;

}c++中所有變數和函式都必須又宣告。c語言中的預設型別在c++中是不合法的。

#include

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到C 的公升級

c與c 的關係 1.c 繼承了所有的c特性 2.c 在c的基礎上提供了更多的語法和特性 3.c 的設計目標是執行效率與開發效率的統一 c 對c的加強 1.c 中更強調語言的 實用性 所有的變數都可以在需要使用的時候再定義 for int i 0 i 10 i c 編譯器不報錯 注意 c語言中的變數都...

C到C 的公升級

c 的加強主要表現在 型別的加強 物件導向支援 1 變數定義 c 更強調語言的實用性,所有的變數都可以再需要使用的時候再定義,c語言中的變數都必須在作用域開始的位置定義 int c 0 for int i 1 i 3 i register 關鍵字請求編譯器將區域性變數儲存與暫存器中 早期的c語言編譯...

C到C 的公升級

即使分配了空間也不會用儲存空間裡面的內容,只會使用符號表的值。再舉個例子 1 constint a 10 2 constint b 20 3 int c a b 上面的 在c中會報錯 無法確定陣列長度 因為在c中const只是個唯讀變數,本質上還是變數,有儲存空間,定義陣列長度用變數當然會出錯了。但...