原文轉載於:http://blog.csdn.net/qq_30125317/article/details/47066675 非常感謝。
有適當修改,感謝。
一、應用場合
C語言:C語言是結構化和模組化的語言,是面向過程的。當程式的規模較小時,C語言運用起來得心應手。但是當問題比較複雜、程式的規模比較大的時候,C語言就會展現出它的局限性。
C++:正是因為有大規模的程式需要去處理,C++就應運而生了。C++是由C發展而來的,與C語言相容。C++既可用於面向過程的結構化程式設計,也可用於物件導向的程式設計,是一種功能強大的混合型的程式設計語言。
與此看來,它們兩者並兩個孤立的個體,有著密切的串連關係。C++可以看做是C的超集,其實任何語言之間都沒有明顯的界限,C語言是基礎,在此基礎上所開發出來的所有語言都是在不同的場合發揮著它們獨特的作用以及展示它們各自的優越性。
二、文法的不同之處
1、標頭檔
C語言:#include //標準輸入、標準輸出
**C語言中所有的標頭檔都帶尾碼 .h(比如stdio.h)
C++:#include//輸入輸出資料流所包含的標頭檔
using namespace std; //C++標準庫中的類和函數是在命名空間std中聲明的。
**C++中有系統提供的標頭檔不帶尾碼 .h,使用者自己編製的標頭檔可以有尾碼 .h。
2、輸入/輸出函數
C語言:用一個例子說明一下:
int a=1;
double d=3.1415926;
printf("%d\n",a);
printf("a=%d\n",a);
printf("b=%6.3f, b=%6.2f, b=%.3f\n",b,b,b);
scanf("%d",&a);//取地址,輸入a的值
%d和%f稱為格式說明符,表示以此格式輸出對應運算式的值,\n表示換行。%6.3f 中的6表示佔六列,.3 表示輸出對應浮點運算式值時只輸出三位小數。
C++:也是用一個例子說明:
int a=5;
float b;
cout << "a="<<a<<endl;
cin >>b;
cout必須要和”<<“一起使用,cin必須要和”>>“一起使用。我覺得C++中的輸入輸出資料流是很強大的,它不像C裡面還要指定格式。endl表示換行。
3、字串
另外一個我覺得C++裡面另外一個特別好用的用來存放字串的就是string,它是在C++標準庫中聲明的一個字串類。
C語言:char a[20]="hangzhou";
char *p="hangzhou";
可以用上面兩種方式 ,一種是用數組的方式儲存字串,另外一種是用字串指標。這兩種方法都有一個麻煩的地方就是,字串的串連、比較啊等等都需要調用函數執行,比如strcmp函數、strcat函數、strcpy函數。
strcmp:字串比較
strcat:字串串連
strcpy:字串複製
C++: string s1="abcd";
string s2="hello world";
string s3=s1+s2;
s1=s2;
字串串連:s1+s2
字串拷貝:s1=s2
字串比較:s1==s2 s1!=s2
由此看來是不是方便了許多。
4、結構體和類
C語言:結構體
struct Student //聲明了一個名為Student的結構體類型
{ int num;
char name[20];
char sex;
} ;
Student stud1,stud2; //定義了兩個結構體變數 ,預設情況下為public類型。
C++:類
class Student
{ private:
int num;
char name[20];
char sex;
public:
void display()
{ cout<<"num="<<num<<endl;
cout<<"name="<<name<<endl;
cout<<"sex="<<sex<<endl; }
};
Student stud1,stud2;//定義了兩個Student類的對象
C++中的類將資料和操作封裝在一起,並且指定了存取權限。如果不指定public,也不指定private,則系統就預設為私人的,這一點和C語言中的結構體是不一樣的。因為類的出現,那麼繼承和派生、多態性等問題也就接踵而至了。
三、總結
C語言和C++的不同,除了表現在使用的場合不同,還有更多的是表現在文法的不同,但是基本的思想是一致的。還是那句話,C語言更加註重的是過程,C++除了保留C語言的優點,還增加了物件導向的機制。其中的細節有很多,在這裡就不一一列舉了,只是一個大致的方向。