單從語法上講,C++繼承了C中幾乎全部的關鍵字,所以在C++中使用C語言徹底沒有問題。
須要注意的是,printf() 和 scanf() 是庫函數,他們並非C語言的一部分。好比,你不包含頭文件stdio.h的時候便沒法使用他們,但int,while,for等關鍵字仍然能夠使用。
在C++中使用C語言的庫函數時,在包含頭文件的部分,須要做一些變動:
咱們使用 #include <cstdio>,而不是 #include <stdio.h>。這對於C中的其餘頭文件也同樣,好比 <ctype.h> , <string.h> 在C++中都要用 <cctype> 和 <cstring> 代替。
ios
學習語言時咱們最早接觸的老是程序框架,以後學習的內容只需在此之上進行添加和修改:
框架
#include <iostream>函數
using namespace std;學習
int main()ui
{spa
return 0;對象
}繼承
這是C++的基本框架,它和C的:
ci
#include <stdio.h>作用域
int main()
{
return 0;
}
稍有不一樣。
咱們各自包含了他們的一個基本庫函數的頭文件,它們各自含有C++和C中的輸入輸出函數。
對C而言,咱們用下面的程序進行輸入輸出:
#include <stdio.h>
int main()
{
int n;
if(scanf("%d", &n))
printf("I entered a number %d to n.\n", n);
return 0;
}
我在這裏很矯情地使用了if語句,提醒你們scanf()是有返回值的,它返回正確讀入變量的個數。
而在C++中,咱們這麼幹:
#include <iostream>
using namespace std;
int main()
{
int n;
if(cin >> n)
cout << "I entered a number " << n << " to n.\n";
return 0;
}
不難猜出cin和cout的做用,它們和scanf()還有printf()的做用是相似的。並且十分方便,咱們終於不用記憶那些繁瑣的格式說明符了,C++中的cin和cout會自動判別n是一個in型變量。須要注意的是 >>和<< 是C++中的操做符。
另外,if(cin >> n)是有些奇怪的,scanf()有返回值,但cin >> n是個什麼東西?它有值麼?事實上cin是一個對象,它和 >> 構成了操做符重載,重載函數的返回值是對象自己。頭暈麼?這涉及到函數重載的內容,在此暫時不做探討。但咱們要知道,這麼用cin是合理的:
cin >> n >> m;(m假設已聲明。) 能夠這麼理解(cin >> n) >> m (cin >> n)就是cin。
這表示依次向n和m中輸入,至於m是個什麼類型變量,這個cin它會知道的,並會按照這種類型的標準向其輸入,就像用了對應了各式說明符同樣,這和cout一致。
值得一提的是,C++中多了:
using namespace std;
這行代碼。
你會發現using和namespace都是關鍵字,它們是C++中的,在C中沒法使用。
這個語句聲明瞭一個名稱空間std,cout和cin是這個空間中的名稱,想一想看若是沒有這行會發生什麼?你的IDE會報錯,說cout和cin是沒有被聲明的變量。這和C中包含頭文件的用意很類似。
在C中,printf()和scanf()這兩個函數能夠直接使用,由於它們的定義和聲明都已經在別處存放。可是咱們要使用#include <stdio.h>,這個文件中包含了它們的聲明。
而在C++中,你能夠把變量或者類也這麼作。好比,你將一個叫作SHIT的變量聲明在一個叫作stshit的名稱空間中,你只要使用了using namespace stshit; 就能夠直接使用這一坨翔而不用聲明。
而聲明一個名稱空間是後面的內容。
事實上根據以上的內容,你在C中能寫的程序,在C++中已經能夠照搬了,C++提供了全新的輸入輸出手段。
至於C語言中的函數部分(特別是參數傳遞中的形參和實參等),變量的做用域等,在C++中依然沒有任何變化,但都是重要的內容。
在此給出一個實例程序供你們熟悉C++:
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "If you give a num to n,"
<< " I will return you a sum from 1 to n(0 to quit).\n"
<< "n: ";
while(cin >> n) {
if(!n) break;
int sum = 0;
for(int i = 1; i <= n; i++)
sum += i;
cout << "sum: " << sum << endl
<< "Enter n again: (0 to quit) ";
}
return 0;
}