注意:在閱讀本 C++ 指標簡要概述時,您會看到一些
程式碼示例,這些示例旨在幫助說明和記錄此處解釋的概念。
程式碼示例的部分內容不具有結論性、可編譯性,
也不保證沒有型別宣告或初始化錯誤。
如果您曾經使用過快捷方式(Windows)或符號連結(UNIX),您應該
會發現指標是一個相對容易的概念。有引用,然後有
指標(它檢視被引用的值)。儘管在上下文中非常相似,
但在引用的正確使用和解釋方面與指標的正確使用和解釋
之間存在細微差別。
為了說明這一點,如果您可以想象在 Windows 桌面上有一個快捷方式。
這個快捷方式可以被視為一個指標,因為它直接“指向”目標
檔案本身。引用就是我們目標檔案的實際位置(或容器),
類似於郵寄地址(即,在哪裡可以找到我們的目標?)。
在使用指標時,有兩個運算子具有非常特定的功能
需要考慮。
引用(取地址):第一個是“&”符號,它放在現有
變數或函式之前,並返回它在記憶體中的實際地址(引用)。
例如:
1 2 3 4 5
|
char * varAuthor = "Matt Borja";
// a pointer (*) to another pointer (*), or simply **
char ** address_varAuthor = &varAuthor;
printf("Memory address of varAuthor: %x\n", address_varAuthor);
|
指標(解引用):另一個運算子是星號“*”,放在我們的地址變數
之前,它返回由引用指向的值。
例如:
|
printf("Value found at this memory address: %s\n", *address_varAuthor);
|
請記住,觀察資料型別很重要,因為它們必須被視為
與 C++ 中的標準變數相同。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
#include <iostream>
using namespace std;
int main()
{
// declare char type varAuthor
char * varAuthor = "Matt Borja";
// reference variable addr_varAuthor of our original varAuthor
char ** addr_varAuthor = &varAuthor;
printf("Value of our original varAuthor is %s.\n", varAuthor);
printf("Address (reference) of our original varAuthor is %x.\n", addr_varAuthor);
printf("Value (pointer) of our address (%x) is %s.\n", addr_varAuthor, *addr_varAuthor);
printf("Get it?\n");
return 0;
}
|