C++ 解引用
獲取記憶體地址和值
在上一頁的示例中,我們使用了指標變數來獲取變數的記憶體地址(與引用運算子 &
一起使用)。但是,你也可以使用指標來獲取變數的值,這可以透過使用 *
運算子(解引用運算子)來實現:
string food = "Pizza"; // 變數宣告
string* ptr = &food; // 指標宣告
// 引用:使用指標輸出 food 的記憶體地址(0x6dfed4)
cout << ptr << "\n";
// 解引用:使用指標輸出 food 的值(Pizza)
cout << *ptr << "\n";
需要注意的是,符號 *
在這裡可能會讓人感到困惑,因為它在我們的程式碼中有兩種不同的作用:
- 在宣告中使用時(
string* ptr
),它建立一個指標變數。 - 在非宣告中使用時,它作為解引用運算子。
修改指標值
你可以改變指標的值。但要注意,這也會改變原始變數的值:
string food = "Pizza";
string* ptr = &food;
// 輸出 food 的值(Pizza)
cout << food << "\n";
// 輸出 food 的記憶體地址(0x6dfed4)
cout << &food << "\n";
// 訪問 food 的記憶體地址並輸出其值(Pizza)
cout << *ptr << "\n";
// 改變指標的值
*ptr = "Hamburger";
// 輸出指標的新值(Hamburger)
cout << *ptr << "\n";
// 輸出 food 變數的新值(Hamburger)
cout << food << "\n";
解引用指標的注意事項
- 解引用指標時,要確保指標指向有效的記憶體地址,否則會導致程式崩潰。
- 不要解引用空指標,這會導致程式崩潰。
- 修改指標的值可能會導致意外的結果,應謹慎操作。
總結
解引用是 C++ 中一個重要的概念,它允許你獲取指標指向的變數的值或記憶體地址。在使用解引用運算子時,要遵循一些注意事項,以避免程式崩潰或意外結果。
C++ 函式
函式概述
函式是一組用於執行特定任務的封裝程式碼塊。它們可以提高程式碼的可重用性、可讀性和可維護性。
建立函式
在 C++ 中,建立函式需要遵循以下語法:
returnType functionName(parameterList) {
// 函式體
}
其中:
returnType
:函式的返回值型別,可以是void
(無返回值)或其他資料型別。functionName
:函式名稱,由字母、數字和下劃線組成,但不能以數字開頭。parameterList
:函式引數列表,引數之間用逗號分隔,每個引數由資料型別和引數名組成。函式體
:函式要執行的程式碼,由花括號括起來。
例如,以下程式碼建立了一個名為 printMessage
的函式,該函式接收一個字串引數並將其列印到控制檯:
void printMessage(string message) {
cout << message << endl;
}
函式呼叫
要呼叫函式,只需在程式碼中寫下函式名及其引數值,例如:
printMessage("Hello, world!");
函式引數
函式引數可以是輸入引數、輸出引數或輸入輸出引數。
- 輸入引數:函式從呼叫者接收資料。
- 輸出引數:函式將資料返回給呼叫者。
- 輸入輸出引數:函式既可以接收資料又可以返回資料。
在 C++ 中,函式引數預設是輸入引數。要宣告輸出引數或輸入輸出引數,需要使用引用或指標。
函式返回值
函式可以返回一個值給呼叫者。返回值型別寫在函式宣告的括號前面,例如:
int square(int number) {
return number * number;
}
該函式接收一個整數引數 number
,並返回其平方值。要呼叫該函式並獲取返回值,可以使用以下程式碼:
int result = square(5);
cout << result << endl; // 輸出 25
函式宣告和定義
函式宣告告訴編譯器函式的名稱、返回值型別和引數列表,而函式定義提供了函式要執行的程式碼。
函式宣告通常放在程式的開頭,而函式定義放在後面。例如:
// 函式宣告
void printMessage(string message);
int square(int number);
// ...
// 函式定義
void printMessage(string message) {
cout << message << endl;
}
int square(int number) {
return number * number;
}
函式過載
函式過載是指允許使用相同名稱但不同引數列表的多個函式。例如:
void printMessage(string message) {
cout << message << endl;
}
void printMessage(int number) {
cout << number << endl;
}
在呼叫這些函式時,需要根據實際引數型別選擇正確的函式。
函式的作用域
函式的作用域是指函式內的變數和函式名在程式中可見的範圍。函式內的變數和函式名只在該函式內可見,在其他函式中不可見。
總結
函式是 C++ 中重要的程式設計概念,它們可以提高程式碼的可重用性、可讀性和可維護性。透過理解函式的宣告、定義、呼叫和引數傳遞等概念,您可以編寫更簡潔、更有效的 C++ 程式。
最後
為了方便其他裝置和平臺的小夥伴觀看往期文章:
微信公眾號搜尋:Let us Coding
,關注後即可獲取最新文章推送
看完如果覺得有幫助,歡迎點贊、收藏、關注