[英]How to get the memory address of a pointer to a char[] in c++
完全披露:這是作業。 我只是對一部分感到困惑。 我在c ++程序中有這個代碼:
char * charArray = new char[100];
//fill charArray
char c = '.';
for(int i=0; i<100; i++)
{
charArray[i] = c;
c = c + 1;
}
cout <<"Char Array: " << endl;
for(int i=0; i<100; i++)
{
cout << "Type: Char @ " << &charArray[i] << " = " << charArray[i] <<endl;
}
在我的程序中的不同點我幾乎完全相同的代碼,但它不是一個char數組,它是一個浮點數組。 當我打印出float數組時,我得到Type:Float @ whatAppearsToBeAProperMemoryAddress = correctFloat#。
然而,雖然字符是正確的,但地址似乎不是。 地址為char數組是這樣的:./0123456789<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_ abcdefghijklmnopqrstuvwxyz{|}~?????????????????? /0123456789<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_
abcdefghijklmnopqrstuvwxyz{|}~?????????????????? /0123456789<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_
ABCDEFGHIJKLMNOPQRSTUVWXYZ {|}〜??????????????????
....一直到?? ?
所以很明顯,不是獲取地址,我得到不同程度的數組內容。 我很困惑,任何指針都會受到贊賞。 這是我在c ++上的第一次破解。
因為&charArray[i]
仍然是指向字符串的第i個字符的char*
。 所以它被用作整個字符串。 試着像這樣投:
(void*)&charArray[i]
這與:
(void*)(charArray+i);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.