问题描述
我是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;
}