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
- Java基礎經典案例Java
- Python入門經典案例一Python
- Linux 【Shell指令碼經典案例】Linux指令碼
- 深入理解負載均衡經典案例負載
- 關於AWK的10個經典案例
- 【C++】 55_經典問題分析 四C++
- JavaScript經典案例:鍵盤控制元素移動JavaScript
- 【經典案例】Python詳解設計模式:策略模式Python設計模式
- 全球十大農業大資料經典案例大資料
- 30個關於Shell指令碼的經典案例(中)指令碼
- 30個關於Shell指令碼的經典案例(上)指令碼
- 30個關於Shell指令碼的經典案例(下)指令碼
- 《戰國 BASARA》,一個盛極必衰的經典案例
- 智慧垃圾分類回收系統解決方案(經典案例)
- 畫江湖之SQL優化 -10大經典案例場景SQL優化
- 視訊教程-Python機器學習經典案例實戰-PythonPython機器學習
- 淺談「復仇」在遊戲中的作用與經典案例遊戲
- H5經典案例:2015,你靠什麼過的更好?H5
- SICP 經典
- MySQL 資料庫“十宗罪”(十大經典錯誤案例)MySql資料庫
- vuex-stepbystep 經典案例,詳細註釋一步到位Vue
- JS 第三方工具封裝經典案例(canvas時鐘)JS封裝Canvas
- C++面試寶典C++面試
- 人工智慧研究:經典推理和非經典推理人工智慧
- Spring 經典教程Spring
- AT 經典90題
- 資料恢復經典案例分析-raid兩塊硬碟離線恢復資料恢復AI硬碟
- 清華尹成帶你實戰GO案例(42)Go 經典hello worldGo
- JS 第三方工具封裝經典案例(canvas元素拖動)JS封裝Canvas
- 初學Python必備十大經典案例(初學者必看)❃✿❈❉❀❁下Python
- 資料安全秘籍:500強企業的經典傳輸案例大揭秘
- 開發者以經典案例談7個典型的BOSS戰役形式
- 奪命雷公狗-----React---24--小案例之react經典案例todos(單條任務的刪除)React
- C++入門經典第一章程式設計專案C++程式設計
- JS 第三方工具封裝經典案例(canvas動態繪圖)JS封裝Canvas繪圖