如何解决指针地址和指针指向的变量地址
我是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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。