国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++與C的差異分析

2020-01-26 15:24:13
字體:
來源:轉載
供稿:網友

雖說C++是向后兼容C的,但C++與C還是存在許多差異。本文列舉了幾個例子加以說明,同時這些也是我們非常容易忽略的地方。本文僅簡單的列舉幾例,更多的不同之處讀者還需要在學習與實踐中不斷的進行發掘和總結。

C編譯通過但C++編譯不通過:

1、C++中編譯器不允許在一個函數聲明之前調用它,但C中編譯器是允許的。

#include<stdio.h> // 請用gcc和g++分別進行編譯 int main() {   foo();   // foo()在它的聲明/定義之前被調用 }   int foo() {   printf("Hello");   return 0;  } 
 

2、C++中不能用一個普通指針指向一個常量,但C中可以。

#include <stdio.h> // 請用gcc和g++分別進行編譯   int main() {   int const j = 20;    /* C++編譯會報錯,C中編譯會有warning,但可以通過 */   int *ptr = &j;    printf("*ptr: %d/n", *ptr);   return 0; } 

3、在C語言中,void指針可以直接賦給其他類型的指針,如int *, char *等。但在C++中,void指針必須要明確地進行類型轉換。(malloc函數返回值為void *類型)

#include <stdio.h> // 請用gcc和g++分別進行編譯 int main() {   void *vptr;   int *iptr = vptr; // C++中必須用int *iptr = (int *)vptr;   return 0; } 

C和C++輸出結果不相同:

4、字符常量在C和C++被當作不同地類型看待:在C中,字符常量如'a','b'被當作int型,而在C++中被當作char型。所以,在C中sizeof('A')相當于sizeof(int),輸出為4;在C++中sizeof('A')仍相當于sizeof(char),輸出為1。

#include<stdio.h> // 請用gcc和g++分別進行編譯 int main() {  printf("%d", sizeof('a'));  return 0; } 

5、在C中定義結構體必須使用`struct`關鍵字,但在C++中可以省略。在C++中局部變量會覆蓋同名的全局變量,但在C中卻不會。

#include <stdio.h> // 請用gcc和g++分別進行編譯 int T;   int main() {   struct T { double x; };    printf("%d", sizeof(T)); // C輸出4,C++輸出8   return 0; } 

6、布爾結果在C++和C中的表示是不同的。因為C語言不直接支持布爾型,所以其實返回的是int型,而C++則返回的是bool類型。所以sizeof(1==1)在C中是sizeof(int),在C++中是sizeof(bool)。

#include <stdio.h> // 請用gcc和g++分別進行編譯  int main() {   printf("%d/n", sizeof(1==1)); // C輸出4,C++輸出1   return 0; } 

本文僅對C++與C的差異做一個簡單的分析與總結,相信對于大家更好的理解C與C++起到一定的幫助作用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 林甸县| 错那县| 女性| 光山县| 柳林县| 弥渡县| 清丰县| 蒙自县| 剑川县| 报价| 晋城| 绥德县| 贵定县| 青铜峡市| 泰宁县| 微山县| 邯郸市| 大港区| 额济纳旗| 墨竹工卡县| 仁怀市| 临清市| 渭源县| 龙川县| 合作市| 文安县| 怀仁县| 运城市| 兴国县| 深泽县| 花莲县| 佛教| 南郑县| 淅川县| 凤城市| 广东省| 隆回县| 剑阁县| 阿图什市| 西乡县| 遵义县|