引用的例子 C C++ 中區別
#include
using namespace std;
void swap (int &x,int &y);
int main()
{
int a=2,b=3;
swap (a,b);
cout < cout < return 0;}
void swap (int &x,int &y)
{
int temp;
temp=x;
x=y;
y=temp;
}
為什麼上面的可以交換,下面的就不可以了呢?
#include
using namespace std;
void swap (int x,int y);
int main()
{
int a=2,b=3;
swap (a,b);
cout < cout < return 0;}
void swap (int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
在C/C++呼叫函式時, 如果函式有引數, 這時C/C++使用的是傳值的方式, 而不是VB裡的傳址的方式.比如函式:
void swap(int a, int b) {int temp=b; b=a; a=temp;}
該函式看起來是用來交換a和b的值的, 但是如果有程式碼:
void main() {int a=2, b=3; swap(a,b);}執行完該函式以後a仍然是2, b仍然是3, 也就是說a和b的值並沒有交換. 為什麼哪? 這就是"傳值"的方式. 也就是說呼叫該函式時, swap所操作的a和b並不是main函式里的a和b, 而是另外在堆疊上申請了一塊記憶體, 只是把main函式里的a和b複製過來了. 因此在swap函式里無論對a和b做什麼操作都不會影響到main裡的a和b的.
如果是在VB裡, 那麼swap函式內部的a和b和main函式里的a和b是同一塊記憶體, 執行完swap(a,b)後,a=3,b=2;
如果想要達到swap(a,b)後a=3,b=2在C語言裡只有使用指標來現. 但指標不易操作, 且容易出錯. 因此C++裡定義了引用型別, 如果變數宣告為引用, 那麼函式便為"傳址", 也就達到了swap交換的目的.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8780503/viewspace-1034210/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- c++中指標和引用的區別?C++指標
- 關於java的引用和c++的區別JavaC++
- C/C++引用和指標的聯絡和區別C++指標
- 119 C++中的引用&C++
- C++引用型別詳解C++型別
- C++ 引用型別簡介C++型別
- C++中的return和exit區別C++
- c與c++的區別C++
- C++中傳指標和傳引用的區別,各自的使用場景是什麼C++指標
- C和C++區別C++
- C++ 引用C++
- 【C++】引用C++
- C++中的&引用符號全解C++符號
- C++中L和_T()之區別C++
- c#中值型別和引用型別的區別C#型別
- C++中break和continue的用法和區別C++
- 關於C與C++的區別C++
- C++的引用技術C++
- C++中const與指標、引用的總結C++指標
- java的引用:用C++/C的引用和指標去理解JavaC++指標
- C++右值引用C++
- 詳解C++引用C++
- c++筆記_引用C++筆記
- C++中過載、重寫、重定義的區別C++
- C++【string】用法和例子C++
- C++【vector】用法和例子C++
- golang中 值型別,指標,引用的區別Golang型別指標
- C語言include關鍵字和引用.h .c的區別C語言
- C++左值引用與右值引用C++
- C++ 右值引用和左值引用C++
- c++ 左值引用與右值引用C++
- 關於C++中字串輸入get與getline的區別C++字串
- c++中物件的引用作為函式的引數C++物件函式
- 【C++】兩個類的相互引用C++
- Windows 下 c++ 呼叫 Rust 庫的例子WindowsC++Rust
- Python與C++引用分析PythonC++
- 深入分析C++引用C++
- C++【stack/queue】用法和例子C++
- const關鍵字在C與C++中修飾變數的區別C++變數