我是指针的新手,我想不出一件简单的事情。
int main ()
{
char *str1="pointer";
printf("%p \n", str1);
cout << str1<<endl;
return 0;
}
输出如下:
0000000000409001
pointer
谁能解释一下这里的区别。 为什么 cout 不打印内存地址?如何让 cout 打印 str1 的地址?
最佳答案
格式说明符%p
打印 void *
, (不正确:所以 char *
被隐式转换为 void *
) char *
转换为 void *
打印前。 (但这实际上是未定义的行为,请参阅注释。正确的做法是 printf("%p", (void *) str1);
)相应的 C++ 代码是 std::cout << (void *) str1 << '\n';
.
代码std::cout << str1;
版画 str1
作为空终止字符串。相应的 C 代码为 printf('%s', str1);
关于c++ - printf() 和 std::cout 在指针方面的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59130516/