C++ 經典案例1例
來源:DBA札記
案例
#include <iostream>
void swapr(int & a, int & b); // a,b are aliases for ints
void swapp(int * p, int * q); // p,q
void swapv(int a, int b); // a,b are new variables
int main()
{
using namespace std;
int wallet1 = 300;
int wallet2 = 350;
cout << "wallet1 = $ " << wallet1;
cout << " wallet2 = $ " << wallet2 << endl;
cout << "Using references to swap contents:\n";
swapr(wallet1, wallet2); // pass vvariables
cout << "wallet1 = $" << wallet1;
cout << " wallet2 = $" << wallet2 << endl;
cout << "Using pointers to swap contents again:\n";
swapp(&wallet1, &wallet2); //pass address of variables
cout << "wallet1 = $" << wallet1;
cout << " wallet2 = $" << wallet2 << endl;
cout << "Trying to use passing by value:\n";
swapv(wallet1, wallet2); // pass values of variables
cout << "wallet1 = $" << wallet1;
cout << " wallet2 = $" << wallet2 << endl;
return 0;
}
void swapr(int &a, int &b) // use references
{
int temp;
temp = a;
a = b;
b = temp;
}
void swapp(int *p, int *q) // use pointers
{
int temp;
temp = *p;
*p = * q;
*q = temp;
}
void swapv(int a, int b) // try using values
{
int temp;
temp = a;
a = b;
b = temp;
}
解釋
這段程式碼演示了透過引用、指標和傳值三種方式來交換兩個變數的值。
首先,在程式碼中定義了三個函式:swapr、swapp和swapv,它們分別用於透過引用、指標和傳值來交換變數的值。
在主函式中,建立了兩個整型變數wallet1和wallet2,並分別賦值為300和350。
接下來,透過cout語句輸出wallet1和wallet2的值。
然後,使用swapr函式透過引用來交換wallet1和wallet2的值,並使用cout語句輸出交換後的值。
接著,使用swapp函式透過指標來交換wallet1和wallet2的值,並再次使用cout語句輸出交換後的值。
最後,使用swapv函式透過傳值來交換wallet1和wallet2的值,並再次使用cout語句輸出交換後的值。
透過執行這段程式碼,你會看到透過引用和指標交換的結果是正確的,而透過傳值交換的結果並不會影響原始的變數值。這段程式碼演示了透過引用、指標和傳值三種方式來交換兩個變數的值。
首先,在程式碼中定義了三個函式:swapr、swapp和swapv,它們分別用於透過引用、指標和傳值來交換變數的值。
在主函式中,建立了兩個整型變數wallet1和wallet2,並分別賦值為300和350。
接下來,透過cout語句輸出wallet1和wallet2的值。
然後,使用swapr函式透過引用來交換wallet1和wallet2的值,並使用cout語句輸出交換後的值。
接著,使用swapp函式透過指標來交換wallet1和wallet2的值,並再次使用cout語句輸出交換後的值。
最後,使用swapv函式透過傳值來交換wallet1和wallet2的值,並再次使用cout語句輸出交換後的值。
透過執行這段程式碼,你會看到透過引用和指標交換的結果是正確的,而透過傳值交換的結果並不會影響原始的變數值。
引用和指標的區別
引用和指標是C++中兩種不同的機制,用於處理變數的別名和記憶體地址。
引用(Reference):
引用是變數的別名,透過使用&符號來宣告引用。 引用必須在宣告時初始化,並且一旦初始化後,它將一直引用同一個變數。 引用在使用時不需要使用*符號進行解引用,直接使用引用名即可訪問原始變數。 引用不能為null,必須引用一個有效的物件。 引用可以被用作函式引數,可以透過引用來修改原始變數的值。 引用不能改變引用的目標,即不能改變它引用的變數。
指標(Pointer):
指標是一個變數,它儲存了一個變數的記憶體地址。 指標透過使用*符號來宣告,並且必須在宣告時初始化為一個有效的記憶體地址或者為null。 指標可以透過解引用運算子*來訪問指標指向的變數的值。 指標可以為null,表示它沒有指向任何有效的物件。 指標可以被重新賦值來指向不同的物件。 指標可以用作函式引數,可以透過指標來修改原始變數的值。 指標可以透過算術運算進行指標的移動。
總結:
引用是變數的別名,指標是儲存變數記憶體地址的變數。 引用必須在宣告時初始化,指標可以在任何時候進行初始化。 引用不能為null,指標可以為null。 引用不能改變引用的目標,指標可以透過重新賦值來指向不同的物件。 引用使用起來更加簡潔,而指標更加靈活。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024924/viewspace-2992448/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- OpenCV之C++經典案例OpenCVC++
- JavaScript經典案例(二)JavaScript
- MySQL經典案例分析MySql
- c++經典(轉)C++
- Java基礎經典案例Java
- C++經典面試題C++面試題
- 經典C/C++面試題C++面試題
- Python入門經典案例一Python
- Linux 【Shell指令碼經典案例】Linux指令碼
- 第八篇:經典案例 - 排序排序
- oracle約束學習經典案例Oracle
- C++經典書籍解讀C++
- 深入理解負載均衡經典案例負載
- Jdon Jpetstore經典應用案例釋出
- C++經典程式100例【10】C++
- JavaScript經典案例:鍵盤控制元素移動JavaScript
- 【C++】 55_經典問題分析 四C++
- 【中亦安圖】Systemstate Dump分析經典案例(7)
- 【中亦安圖】Systemstate Dump分析經典案例(8)
- 程式語言入門經典案例【Python版】Python
- 30個關於Shell指令碼的經典案例(中)指令碼
- 30個關於Shell指令碼的經典案例(下)指令碼
- 30個關於Shell指令碼的經典案例(上)指令碼
- 【經典案例】Python詳解設計模式:策略模式Python設計模式
- 全球十大農業大資料經典案例大資料
- 第七篇:經典案例:資料去重
- C/C++筆試經典——連結串列倒序C++筆試
- c/c++經典面試試題及標準答案C++面試
- C++程式設計師必讀的經典著作C++程式設計師
- 智慧垃圾分類回收系統解決方案(經典案例)
- 視訊教程-Python機器學習經典案例實戰-PythonPython機器學習
- 淺談「復仇」在遊戲中的作用與經典案例遊戲
- 畫江湖之SQL優化 -10大經典案例場景SQL優化
- java 介面回撥經典案例--網路請求回撥Java
- C++ 運算子過載講解與經典例項C++
- 讀Visual C++開發經驗技巧寶典第…C++
- 開發者以經典案例談7個典型的BOSS戰役形式
- Java多執行緒之併發安全經典案例-賣票Java執行緒