指针地址和指针指向的变量地址
Pointer address and address of variables to which pointer points
我是 c++ 的新手,我的问题可能看起来很基础,但你的回答可以帮助我和其他人。
我创建了 char 指针 myPointer1 和 myPointer2 所以
const char *myPointer1 = "Hallo";
const char* myPointer2 = myPointer;
我以为指针存储的是它们指向的变量的地址。在这种情况下,我们只有一个变量“Hallo”,然后两个指针应该指向同一个地址。
但是当我打印时:
cout << &myPointer1 << endl << endl;
cout << &myPointer2 << endl << endl;
结果是两个不同的地址:
009EFC00
009EFBE8
有人能帮忙吗?
您正在打印指针的地址,而不是指针指向的地址。
std::cout << myPointer << std::endl;
这将打印指针指向的地址。
由于 char*
在传递给 std::cout
时被视为字符串,它将打印 Hallo
.
如果您想打印地址本身,您可以通过将其转换为 const void*
并打印它来实现。
#include <iostream>
int main() {
const char *myPointer1 = "Hallo";
const char* myPointer2 = myPointer1;
std::cout << static_cast<const void*>(myPointer1) << std::endl;
std::cout << static_cast<const void*>(myPointer2) << std::endl;
}
我是 c++ 的新手,我的问题可能看起来很基础,但你的回答可以帮助我和其他人。
我创建了 char 指针 myPointer1 和 myPointer2 所以
const char *myPointer1 = "Hallo";
const char* myPointer2 = myPointer;
我以为指针存储的是它们指向的变量的地址。在这种情况下,我们只有一个变量“Hallo”,然后两个指针应该指向同一个地址。 但是当我打印时:
cout << &myPointer1 << endl << endl;
cout << &myPointer2 << endl << endl;
结果是两个不同的地址:
009EFC00
009EFBE8
有人能帮忙吗?
您正在打印指针的地址,而不是指针指向的地址。
std::cout << myPointer << std::endl;
这将打印指针指向的地址。
由于 char*
在传递给 std::cout
时被视为字符串,它将打印 Hallo
.
如果您想打印地址本身,您可以通过将其转换为 const void*
并打印它来实现。
#include <iostream>
int main() {
const char *myPointer1 = "Hallo";
const char* myPointer2 = myPointer1;
std::cout << static_cast<const void*>(myPointer1) << std::endl;
std::cout << static_cast<const void*>(myPointer2) << std::endl;
}