繁体   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