關於C與C 的區別

2021-08-21 12:57:17 字數 1563 閱讀 5234

筆者介紹:姜雪偉,it公司技術合夥人,it高階講師,csdn社群專家,特邀編輯,暢銷書作者,已出版書籍:《手把手教你架構3d遊戲引擎》電子工業出版社和《unity3d實戰核心技術詳解》電子工業出版社等。

專案開發中,經常會遇到c與c++之間互相呼叫問題,但是有時會遇到在c語言沒啥問題,但是將其放到c++中就會出現問題,本篇部落格在此給讀者總結一下,在遇到下面這些情況時就要注意了。

一、在c++使用函式時,事先要先宣告否則就會報錯,但是在c語言就不存在這種問題,如下所示:

#include int main(void)

int fun()

二、在c++中,使乙個常量指標指向乙個常量變數,編譯時會發生報錯,但它是在c中沒有任何問題。

#include int main(void)

error: assignment of read-only location 『*ptr』
再看另乙個例子:

#include int main(void)

error: assignment of read-only location 『*ptr』

為了加深讀者印象再來乙個:

#include int main(void)

error: assignment of read-only variable 『ptr』
最後乙個例子:

#include int main(void)

error: assignment of read-only variable 『ptr』

error: assignment of read-only location 『*ptr』

以上讀者在編寫**時就要注意了。

三、在c中,乙個void指標可以直接分配給其他一些指標,如int *,char *。 但是在c ++中,乙個void指標必須被明確地指定型別。

int main()

四、以下程式在c編譯和執行良好,但在c ++編譯失敗。 c ++中的const變數必須被初始化,但是在c中是沒有必要的。 

int main()

五、我們可以使用乙個c ++特定的關鍵字作為變數名。 該程式將不會在c ++中編譯,但會在c中編譯。

int main(void)

同樣,我們可以使用其他關鍵字,如delete, explicit, class, .. 等。

六、c ++比c更嚴格的型別檢查,例如,以下程式在c中編譯,但不在c ++中編譯。 在c ++中,我們得到編譯器錯誤「從'int'到'char *'」的無效轉換。 

#include int main()

以上是在程式設計時經常遇到的,在此給讀者列出來,供參考。。。。。。。。。

關於C與C 的區別

筆者介紹 姜雪偉,it公司技術合夥人,it高階講師,csdn社群專家,特邀編輯,暢銷書作者,已出版書籍 手把手教你架構3d遊戲引擎 電子工業出版社和 unity3d實戰核心技術詳解 電子工業出版社等。專案開發中,經常會遇到c與c 之間互相呼叫問題,但是有時會遇到在c語言沒啥問題,但是將其放到c 中就...

C 與C的區別

l c如果不寫返回值,預設是int,而c 中不能不寫返回值 可用void表示無返回值 如func1 l int func1 在c中表示可帶任意引數的函式,這是c的漏洞,使得它避開了引數型別檢查 而c 中表示不帶引數的函式。2 標頭檔案的區別 l c 的標頭檔案去掉了c中的.h,以c字首開始。比如,變...

C與C 的區別

1.void型指標 int x malloc sizeof int 10 在c裡面是合法的,但是在c 中編譯不通過。從bjarne stroustrup給出的解釋是這種型別是不安全的。就是說你可以使用乙個void型的指標指向任何位址,如果你分配了乙個位址給這個void指標指向另乙個與它型別不同的指標...