C++ 如何将指针指向字符
所以我想把一个指针指向一个字符,然后输出地址,把它输出这个奇怪的东西:t+a。有什么帮助吗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试图将其解释为
#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);