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

How to get the memory address of a pointer to a char[] in c++

本文关键字:指针 地址 内存 char c++ 取指 获取      更新时间:2023-10-16

完全披露:这是家庭作业。我只是对一部分感到非常困惑。我在 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;
}

在我的程序的不同点,我有几乎完全相同的代码,但不是字符数组,而是浮点数组。当我打印出浮点数组时,我得到类型:浮点@什么出现到BeAProperMemoryAddress = correctFloat#。

但是,尽管字符正确,但地址似乎并非如此。字符数组的地址如下所示:./0123456789<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_ abcdefghijklmnopqrstuvwxyz{|}~?????????????????? /0123456789<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_ abcdefghijklmnopqrstuvwxyz{|}~??????????????????

....一直到???

因此,显然,我没有得到地址,而是得到了不同程度的数组内容。我很困惑,任何指示将不胜感激。这是我第一次接触 c++。

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

(void*)&charArray[i]

这与:

(void*)(charArray+i);