簡體   English   中英

如何在c ++中獲取指向char []的指針的內存地址

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM