获取指针的地址

R4D*_*4D4 7 c++ pointers pointer-address

我很抱歉,我知道有关指针,数组等的问题有一百万个,尽管基本上这样我似乎无法找到任何指向(哈哈!)的答案.

我有一个初始化为指向一块内存的指针,我知道我可以像访问数组一样访问这个内存:

char *mMem=new char[5000];
cout<<mMem[5]<<endl;
Run Code Online (Sandbox Code Playgroud)

实际上是:

char *mMem=new char[5000];
cout<<*(mMem+5)<<endl;
Run Code Online (Sandbox Code Playgroud)

我不明白的是如何获取元素的地址- 我知道元素不是一个正确的单词,因为mMem不是一个数组 - 如果我的理解是正确的,那就不可能当然,因为看起来每个站点在指针和数组时都会使用它想要的任何单词.所以,如果我有:

char *mMem=new char[5000];
cout<<mMem[5]<<endl;
    or
cout<<*(mMem+5)<<endl;
Run Code Online (Sandbox Code Playgroud)

为什么运算符的地址不能正常工作:

cout<<&mMem[5]<<endl;
Run Code Online (Sandbox Code Playgroud)

我没有获取第5个元素的地址,而是从该元素开始打印出内存块内容.那么,为什么运算符的地址不能像我期望的那样工作呢?如何获得内存元素的地址?

Tam*_*más 14

&mMem[5] 第5个元素的地址.从那里获得内存打印输出的原因是因为它们的类型&mMem[5]char*,但是旧版C中的字符串也是char*,所以<<操作员只是认为你想从那里打印一个字符串.我会尝试void*在打印之前将指针强制转换为:

cout << static_cast<void*>(&mMem[5]) << endl;
Run Code Online (Sandbox Code Playgroud)

顺便说一句,&mMem[5]并且mMem+5是一样的.