如何在c ++中获取指向char []的指针的内存地址

时间:2013-10-24 05:06:44

标签: c++ arrays pointers

完全披露:这是作业。我只是对一部分感到困惑。 我在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数组。当我打印出float数组时,我得到Type:Float @ whatAppearsToBeAProperMemoryAddress = correctFloat#。

然而,虽然字符是正确的,但地址似乎并非如此。 char数组的地址如下: ./0123456789< =&GT; @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [] ^ _ abcdefghijklmnopqrstuvwxyz{|}~?????????????????? /0123456789<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ ABCDEFGHIJKLMNOPQRSTUVWXYZ {|}〜??????????????????

.... 一直到 ?? ?

所以很明显,不是获取地址,我会得到不同程度的数组内容。我很困惑,任何指针都会受到赞赏。这是我在c ++上的第一次破解。

1 个答案:

答案 0 :(得分:2)

因为&charArray[i]仍然是char*指向字符串的第i个字符。所以它被用作整个字符串。试着像这样投射:

(void*)&charArray[i]

与以下内容相同:

(void*)(charArray+i);