C++ 如何将指针指向字符

C++ 如何将指针指向字符,c++,pointers,character,C++,Pointers,Character,所以我想把一个指针指向一个字符,然后输出地址,把它输出这个奇怪的东西:t+a。有什么帮助吗 #include <iostream> using namespace std; int main() { char a = 't'; char* p = &a; cout << p; return 0; } #包括 使用名称空间std; int main(){ 字符a='t'; char*p=&a; cout您正在打印一个char*类型,cout试图将其解释为

所以我想把一个指针指向一个字符,然后输出地址,把它输出这个奇怪的东西:t+a。有什么帮助吗

#include <iostream>

using namespace std;

int main() {

char a = 't';
char* p = &a;

cout << p;

return 0;
}
#包括
使用名称空间std;
int main(){
字符a='t';
char*p=&a;

cout您正在打印一个
char*
类型,
cout
试图将其解释为字符串

使用以下方法打印指针的值(它指向的地址)


cout问题在于
char*
通常不仅仅用作指向
char
的指针,而是指向a的指针。因此,您可以看到
t
,然后它打印无效内存,这是一种未定义的行为,可能会崩溃或打印垃圾或其他东西


解决这一问题的方法是使用
void*
或者可能使用
const void*
,它只是一个带有地址但没有附加类型信息的指针。
void*p=&a;
将是一个解决方法。
void*p2=p;
然后使用
std::cout如果您想要指针的地址,可以将其强制转换为void指针

std::cout << (void *)p;

否则它将被当作空终止的字符串,它不是。< /P>有什么错误吗?有什么错误吗?你希望什么?你的帖子不完整,我们不能帮助你。输出<代码> cOut:我想看到那个字符的地址,以添加适当的C++演员,将是<代码>静态的(P)< /代码>。
std::cout << (void *)p;
printf("%p", p);