《艾爾登法環》為什麼叫老頭環 老頭環稱呼由來
變數的記憶體地址(變數放在哪裡)
每一個變數都有一個記憶體位置,每一個記憶體位置都定義了可使用連字號(&)運算子訪問的地址,它表示了在記憶體中的一個地址。請看下面的例項,它將輸出定義的變數地址:
#include<bits/stdc++.h> using namespace std; int main() { int a; a=19; cout<<a<<endl;//變數a的值 cout<<&a<<endl;//變數a的地址在記憶體的位置 return 0; }
執行結果
19
0x22fedc //變數a的首地址
在計算機中,記憶體空間是按位元組進行編址,即每8個位都有一個地址。不同型別的資料佔用的記憶體大小不一樣,如int佔4位元組,上例中a佔用從0x22ffedc開始的4個位元組。
記憶體地址是16進位制的。
什麼是指標?
指標是一個變數,其值為另一個變數的地址,即,記憶體位置的直接地址。就像其他變數或常量一樣,您必須在使用指標儲存其他變數地址之前,對其進行宣告。指標變數宣告的一般形式為:
type *var-name;
在這裡,type 是指標的基型別,它必須是一個有效的 C++ 資料型別,var-name 是指標變數的名稱。用來宣告指標的星號 * 與乘法中使用的星號是相同的。但是,在這個語句中,星號是用來指定一個變數是指標。以下是有效的指標宣告:
int *ip; /* 一個整型的指標 */
double *dp; /* 一個 double 型的指標 */
float *fp; /* 一個浮點型的指標 */
char *ch; /* 一個字元型的指標 */
所有指標的值的實際資料型別,不管是整型、浮點型、字元型,還是其他的資料型別,都是一樣的,都是一個代表記憶體地址的長的十六進位制數。不同資料型別的指標之間唯一的不同是,指標所指向的變數或常量的資料型別不同。
C++ 中使用指標
使用指標時會頻繁進行以下幾個操作:定義一個指標變數、把變數地址賦值給指標、訪問指標變數中可用地址的值。這些是通過使用一元運算子 * 來返回位於運算元所指定地址的變數的值。下面的例項涉及到了這些操作:
#include<bits/stdc++.h> using namespace std; int main() { int a; int * pa; a=19; cout<<a<<endl;//變數a的值 cout<<&a<<endl;//變數a的地址在記憶體的位置 pa=&a;//把變數a的地址給pa cout<<pa<<endl; cout<<*pa<<endl; return 0; }
執行結果
19
0x22fed8
0x22fed8
19
注意pa本身也有記憶體地址
#include<bits/stdc++.h> using namespace std; int main() { int a; int * pa; a=19; cout<<a<<endl;//變數a的值 cout<<&a<<endl;//變數a的地址在記憶體的位置 pa=&a;//把變數a的地址給pa cout<<pa<<endl; cout<<*pa<<endl; cout<<&pa<<endl; //pa的記憶體地址 return 0; }
19
0x22fedc
0x22fedc
19
0x22fed8//pa的記憶體地址