01 概述
能夠簡單理解爲C++是C的超集(固然,也有C的部分特性是C++不支持的),C語言較爲底層,在嵌入式、操做系統等領域使用,C++則是面向對象的編程語言,引入了classes、templates、exceptions 等不少新特性,兩者應用領域不一樣,不存在孰優孰劣。編程
C語言知識圖譜:數組
https://en.cppreference.com/w/c/language編程語言

C++語言知識圖譜:函數
https://en.cppreference.com/w/cpp/languagespa

除了上述圖譜顯示的諸多不一樣之處,下面介紹平時經常使用可是容易忽略的一些小區別:操作系統
02 數據類型
C語言中基本數據類型:指針

C/C++中的結構體struct:對象
C語言struct僅僅是對數據類型的封裝,不能封裝函數指針,C++能夠。blog
封裝性:C語言struct默認是public訪問,不具有保護權限,C++中默認是pricate。內存
C++新增bool類型變量:

在數據類型方面,C語言的缺點:
一、C風格字符串(C語言沒有字符串類型,使用\0做爲結束符的字符數組表示字符串):容易致使程序崩潰或執行惡意代碼(很容易致使越界讀寫非法內存,若是寫內存無效,則致使崩潰,若是非法讀是有效的,則會出現不可預料的後果,若是非法寫有效,則會植入惡意代碼)
二、動態內存管理:容易致使內存溢出,程序和系統僵死
三、C語言語法限制不嚴格,各類類型能夠強制轉換
03 初始化方法
C語言提供的初始化方法:
intx =1024;
C++提供兩種初始化方法:
一、複製初始化intx =1024;
二、直接初始化intx(1024);
04 隨用隨定義
C 語言:全部變量定義必須位於函數體的最前面

C++:全部變量隨用隨定義

05 輸入輸出
C語言I/O方式:

C++語言I/O方式:

C++這種輸入輸出方式的好處:
一、不用關注佔位符
二、不用關注數據類型
三、不易出現問題
06 namespace
C++存在命令空間,方便變量命名:
