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