[問題] C和C++的大不同?

看板C_and_CPP作者 (邱邱)時間13年前 (2010/10/13 21:43), 編輯推噓9(9014)
留言23則, 15人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) void swap(int &a,int&b ) { int temp; temp=a; a=b; b=temp; } int main() { int i=50,j=100 printf("i = %d , j = %d \n",i,j ); swap(i,j); printf("i = %d , j = %d \n",i,j ); } 希望得到的正確結果: 不論在c或者c++是都希望看到: i = 50 , j = 100 i = 100 , j = 50 程式跑出來的錯誤結果: 在c++下面可以,在c下面compile不會過 error message: error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) g++ 有問題的code: (請善用置底文標色功能) 補充說明: 抱歉沒說清楚,一樣的code只是在c用prinft,在c++用cout 重點是void swap(int &a,int &b)在c compile不能過 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.14.61

10/13 21:44, , 1F
cout不過是C++的一個class而已,最後還不是送到WinAPI
10/13 21:44, 1F

10/13 21:45, , 2F
reference 是 c++ 才能用的語法
10/13 21:45, 2F

10/13 21:45, , 3F
有什麼好比較的
10/13 21:45, 3F

10/13 21:45, , 4F
void swap(int &a,int&b ) <=你知道 int &a 的意思嗎?
10/13 21:45, 4F
※ 編輯: calmdown 來自: 140.114.14.61 (10/13 21:49)

10/13 21:50, , 5F
swap(int &a,int &b)當然不可能過啊
10/13 21:50, 5F

10/13 21:50, , 6F
為什麼你認為會過?
10/13 21:50, 6F

10/13 21:51, , 7F
C++寫久了,很久沒碰c真的不知道不能降用>"<~
10/13 21:51, 7F

10/13 21:53, , 8F
還以為是要提const或是struct的差異y
10/13 21:53, 8F

10/13 21:55, , 9F
那在c++下他是多做了哪些事情才讓此function work的阿?
10/13 21:55, 9F

10/13 21:55, , 10F
我第一次知道C++可以宣告swap(int &a,int &b )
10/13 21:55, 10F

10/13 21:55, , 11F
編譯器會去修正他吧
10/13 21:55, 11F

10/13 21:55, , 12F
以這個程式來說 只是看不看得懂 int & 的差別
10/13 21:55, 12F

10/13 21:57, , 13F
reference是C++的東西XD
10/13 21:57, 13F

10/13 21:58, , 14F
好奇問james大~ 那 int& 要怎樣解釋? 我也不會...> <
10/13 21:58, 14F

10/13 22:00, , 15F
C use Pass by Value && C++ use Pass by Reference
10/13 22:00, 15F

10/13 22:03, , 16F
簡單講就是swap的a、b跟外面的a、b是同一個
10/13 22:03, 16F

10/13 22:04, , 17F
有誰可以說明一樓講的是哪一個星球的C++ ?
10/13 22:04, 17F

10/13 22:08, , 18F

10/13 22:11, , 19F
原來是call by reference是C++才有的 ><
10/13 22:11, 19F

10/13 22:18, , 20F
給一樓:cout is an object of class ostream.
10/13 22:18, 20F

10/13 22:57, , 21F
我想錯了XD
10/13 22:57, 21F

10/14 23:50, , 22F
送給 WinAPI 應該是對的 XD
10/14 23:50, 22F

10/15 10:38, , 23F
你的j=100後面沒打分號怎麼會編過
10/15 10:38, 23F
文章代碼(AID): #1CjRTyFe (C_and_CPP)