說到c++和c語言的區別,大部分人都會想到物件導向和面向過程。然而這種說法並不準確。物件導向和面向過程指的是兩種不同的程式設計思想,而c++與c是兩種程式語言,難道c++就不能用於面向過程去解決問題嗎,當然可以。而物件導向的設計思想也可以用到c語言中去,我之前的文章就涉及過這方面的知識。
我們這個系列就是要拋開程式設計思想,單純地從語法的角度介紹一下c++中究竟加入了哪些c語言中沒有的功能。希望大家在掌握了c語言之後再來學習這部分內容。
首先,讓我們看一段標準的c++**:
// main.cpp
#include
using namespace std;
int main()
這個是乙個最基本的程式,用來在螢幕上列印出「hello world」這句話。是不是和c語言程式差距較大呢?今天,我們先介紹c++和c語言的幾個最基本的不同。
1. 標頭檔案
c語言中,標準輸入輸出的標頭檔案引用方式如下:
#include
而c++中使用的是:
#include
c++規定,由系統提供的標頭檔案在引用時biyjuf不帶「.h」。如果是自己定義的標頭檔案,需要這樣引用:
#include "myfile.h"
注意,這裡不僅使用了「.h」而且還用了雙引號。原因和c語言相同,從當前路徑開始尋找。另外,由於c++是完全支援c語言的全部功能的,所以當我們要使用c語言提供的標頭檔案時,依然要使用:
#include
這樣定義的好處是,我們只看標頭檔案的包含形式就知道引用的是c++的系統庫還是c語言的系統庫,亦或是自定義函式庫。
2. 命名空間
大家肯定注意到這句話了:
using namespace std;
這句話的意思是引入命名空間std,我們輸出字串使用的cout關鍵字就在std中。c++庫中的函式被劃分到不同的命名空間中,如果需要訪問,就要先使用這句話引入命名空間。
假如我們沒有寫這句話,就要在每次使用到這些函式時手動指定命名空間,之前的**就要變成這樣:
// main.cpp
#include
int main()
這樣寫是合法的,只不過有些麻煩。
3. c++的輸入輸出
c++的輸入輸出做了較大的修改,我們先看下面這個例子:
#i程式設計客棧nclude
using namespace std;
int main()
這個程式實現了輸入兩個數字,之後把它們列印在螢幕上。程式的執行結果如下:
cin相當於scanf,用於把輸入的字元儲存在後面的變數中。cin>一起使用,需要輸入幾個變數就寫幾個變數,>分隔開。
cout
相當於printf,用於把字串或變數列印在螢幕上。需要列印的元素要用
這兩個關鍵字最大的優勢是不需要關注變數的資料型別,c++會根據變數的定義自動匹配合適的資料型別。
使用這兩個關鍵字時必須包含這個庫。
4. 變數的定義
c語言中有個被很多人詬病的規定是變數的定義必須放在**塊的首部。這樣就會經常出現變數的定義和第一次使用之間距離很遠,比如下面這段**。
int main()
return 0;
}這段**中,變數i的宣告和第一次使用之間可能隔了幾十行的**。這樣嚴重影響了**的可讀性,也提高了除錯的成本。
在c++中,這種情況本根本地解決了。c++允許在任何地方定義變數,只要在使用它之前就行。於是就有了這樣的寫法:
for (int i = 0; i < 100; i++)
這樣寫是不是變得非常清楚了。在c++中,我們習慣在使用變數時定義,很多只會用c語言的程式設計師也在使用.cpp檔案寫**就是為了有這麼乙個便利條件。
5. 一定要先學c再學c++嗎
雖然我是帶大家先學c語言再學c++的,很多程式設計師也都是走的這個學習路線。但並不是一定要先學c再學c++。
我總是用這麼個例子來解釋這個問題。c和c++就彷彿是手動擋和自動擋的區別,雖然我們大部分人都是先學手動擋再學自動擋,但並不能說不會開手動擋的人就學不會自動擋。自動擋其實還更好學一些。對於駕駛這兩種車而言,它們有很多相同的部分,比如打方向的方法、踩油門和剎車的方法、打轉向燈的方法、轉彎並線等等這些要點都是相同的,只不過你先學哪個就在那裡學習這些公共部分而已。
c和c++也是一樣,80%以上的語法點都是相同的,而這些語法點你是通過哪種語言學會的沒有任何區別。
大部分學校安排課程的時候都是先學c再學c++,因為c更關注細節,能夠幫助學生更清晰地了解程式和硬體的一些關係,人們認為只要這麼學才能打下好的基礎。但隨著計算機程式設計技術的不斷發展,如今更流行的觀點是程式設計就是為了幫助我們更好地使用計算機解決問題,以這個目的為導向,那些沒必要知道的東西可以不去在意。於是越來越多的人用c++、j**a、甚至python這樣程式設計客棧遠離硬體的語言進行程式設計入門。這www.cppcns.com些人依然可以設計出自己想要的程式。
所以,請大家不要再糾結先學誰後學誰的問題了,可能不久後,我就會推出從零開始學習c++這樣的系列了。
敬請期待~
本文標題: 從c語言過渡到c++之基本變化
本文位址:
從C過渡到C
案例 輸出hello world include using namespace std int main int main 函式過載 函式名相同只有引數 個數或者型別 不同。命名空間 include namespace scope1 namespace scope2 int main 命名空間的作...
從C過渡到C
c plus plus c語言的超級 帶class的c語言 c 可以完全引用c c不能直接呼叫c 案例 輸出hello world 源 helloworld.cpp include using namespace std int main 編譯 g helloworld.cpp o hellowor...
從C過渡到C
作業系統和驅動程式都是c寫的,學好c足夠了。c 在應用層用得多,學嵌入式沒必要學 linux大神都認為c 一無是處,還學它幹嘛 我以後就做驅動開發,沒精力也沒必要學習c 但是說,軟體這個行業是飛速發展的,只靠單一 一種語言並不能支撐整個工作生涯,而且只用單一 一種語言很快就會走進瓶頸,所以我們要開闊...