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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 伺服器資料恢復-伺服器重啟藍色畫面的資料恢復案例
- KaiwuDB 榮獲“2023 IDC 中國可持續發展先鋒案例”人工智慧
- 《細胞》重磅:圍獵免疫細胞!科學家首次發現,免疫細胞與細菌之間的經典捕食關係,竟被霍亂弧菌顛覆了
- C++ 與 QML 之間進行資料互動的幾種方法C++
- Vsan資料恢復—Vsan分散式儲存資料恢復案例
- 伺服器資料恢復—nas儲存硬碟出現故障離線導致無法訪問的資料恢復案例
- 經典音訊效果器合集:FabFilter Total Bundle 2019 for Mac v2019.1.19(03.13)啟用版
- CLion 2023:探索C/C++的智慧之旅,開啟高效程式設計新篇章 mac/win版C++
- 生產真實案例:震驚,幾條SQL把伺服器幹崩了,事後還大言不慚!SQL
- Photoshop Mac 2024 25.1 Mac PS破解版 經典圖片編輯軟體全新ps 2024版
- C++面試八股文:技術勘誤面試C++
- Gdi+列舉系統字型(忽略隱藏字型)C++原始碼C++
- Web Woeker和Shared Worker的使用以及案例
- C++11 列表初始化都做了什麼?C++
- 北亞企安資料恢復-XSAN資料恢復案例