是否有可能找到一個指針變量本身的存儲位置?指針變量本身的內存位置?
即我不想知道的內存位置的指針引用,我想知道指針變量的存儲位置是什麼。
int A = 5;
int *k = &A;
cout << k;
會給我的A.
位置是否k
有一個位置?
是否有可能找到一個指針變量本身的存儲位置?指針變量本身的內存位置?
即我不想知道的內存位置的指針引用,我想知道指針變量的存儲位置是什麼。
int A = 5;
int *k = &A;
cout << k;
會給我的A.
位置是否k
有一個位置?
的int *k
位置是&k
,像這樣:
// For this example, assume the variables start at 0x00 and are 32 bits each.
int A = 9; // 0x00 = 0x09
int * k = &A; // 0x04 = 0x00
int ** k_2 = &k; // 0x08 = 0x04
// Thus:
cout << "Value of A: " << A; // "Value of A: 9"
cout << "Address of A: " << k; // "Address of A: 0x00"
cout << "Address of k: " << k_2; // "Address of k: 0x04"
assert(A == *k);
assert(&A == k);
assert(&A == *k_2);
assert(A == **k_2);
assert(k == *k_2);
assert(&k == k_2);
指針是一個變量,於32位二進制文件的32位和64在64中,存儲的存儲器地址。像任何其他變量一樣,它具有自己的地址,並且語法是相同的。對於大多數意圖和目的,指針的作用類似於相同大小的無符號整數。
現在,當您拍下&k
時,您現在有一個int **
,伴隨着所有有趣的複雜性。
從int ** k_2 = &k
,*k_2
是k
和**k_2
爲*k
,所以一切正常關於你如何期望。
這可以是創建對象的跨庫的有效途徑(指針是相當基本的和主要安全通過)。雙指針通常用於要傳遞指向對象的接口,但不會公開如何創建對象(例如,DirectX)。
是。您可以使用& k打印出* k的內存位置。
'* k'的位置是'k'。 'k'的位置是'&k'。 –
int A = 5;
int *k = &A;
cout << k;
A的地址是k; k的地址是& k。
喲耶,我們把地址在你的地址,你可以在你解決解決。
是要明白,一個指針變量_both_指針和變量是很重要的。並非所有的指針都是變量。例如。 '&A'是一個指針,但不是一個變量。因此,你不能說'&(&A)'。但是'k'在這裏是一個變量,所以_你可以採用它的地址。 – MSalters