C++:指针,查找其目标的地址?

C++:指针,查找其目标的地址?,c++,pointers,C++,Pointers,我肯定这肯定是以前问过的,但我找不到 基本上,我在看这些变量: unsigned short* bufferName = 0; unsigned short* pBuffer = 0; bufferName = new unsigned short[6400]; pBuffer = bufferName; cout << &bufferName << &pBuffer 此设置允许在bufferName中读取6400个像素,每个像素=2个字节。变量pBuf

我肯定这肯定是以前问过的,但我找不到

基本上,我在看这些变量:

unsigned short* bufferName = 0;
unsigned short* pBuffer = 0;
bufferName = new unsigned short[6400];
pBuffer = bufferName;
cout << &bufferName << &pBuffer
此设置允许在bufferName中读取6400个像素,每个像素=2个字节。变量pBuffer用于在bufferName的内存块内进行跟踪

第5行上的cout语句打印每个地址。但是一旦我增加:pBuffer,我怎么才能找到它所指向的新地址呢

非常感谢您的耐心和时间。我知道这篇文章对我所做的非常简短,但我有意保持它的简短。

但一旦我增加:pBuffer,我如何才能找到它所指向的新地址

指针指向的地址是它的值

所以

将输出指向的地址

cout << * pBuffer
将输出指向名为“解引用”的地址中的值

cout << &pBuffer
将输出指针本身的地址永不更改

bufferName和pBuffer已经是指针

如果您想知道pBuffer指向的地址,只需打印它:

std::cout << pBuffer;
它的地址永远不会改变&pBuffer

这是重新录制的示例,您将看到增量2,因为在后期增量后,新地址pBuffer中的unsigned short的大小为:

#include <iostream>

int main()
{
    unsigned short* bufferName = 0;
    unsigned short* pBuffer = 0;
    bufferName = new unsigned short[6400];
    pBuffer = bufferName;
    std::cout << "Address of bufferName " << bufferName << std::endl;
    std::cout << "Address of pBuffer " << pBuffer << std::endl;
    pBuffer++;
    std::cout << "New address of pBuffer " << pBuffer << std::endl;
}

C++外壳上的视图:

指针是一个变量,它通过定义存储其他变量的地址

因此,它直接处理地址,而不像其他处理值的变量

因此,如果您想看到指针指向的位置,只需显示其valuepointer的值,即指向位置的地址。 乙二醇


如果您增加它,应该可以通过&pBuffer访问。您的简短表示感谢:-。但是这个问题很有趣,我不确定我是否理解它。它类似于我有一个整数I。但一旦我增加它,我怎么才能找到它的新价值呢?。该值在变量中。这对于指针以及其他包含值的变量都是正确的。地址是指针所持有的值。4或8字节..一个更有趣的问题是我有一个指针,它指向你例子中的数组,pBuffer;如何找到该数组的开头?答案是,在C和C++中,不能单独从P缓冲区开始。您必须将地址保存在另一个变量中:bufferName多有趣的名称!bufferName不是名称,它是缓冲区本身!或者跟踪偏移量/索引。抱歉,我花了一段时间才回到这个问题上。所有的答案都是非常翔实的;我认为我的主要问题是思考过度。
*pBuffer = 2;
#include <iostream>

int main()
{
    unsigned short* bufferName = 0;
    unsigned short* pBuffer = 0;
    bufferName = new unsigned short[6400];
    pBuffer = bufferName;
    std::cout << "Address of bufferName " << bufferName << std::endl;
    std::cout << "Address of pBuffer " << pBuffer << std::endl;
    pBuffer++;
    std::cout << "New address of pBuffer " << pBuffer << std::endl;
}
Address of bufferName 0x87a750
Address of pBuffer 0x87a750
New address of pBuffer 0x87a752
cout<< pbuffer ;
cout<< A << endl;

cout<<&A;
7526
5669