#include <iostream>
using namespace std;
int main()
{
char *pc;
int *pi;
double *pd;
pc = (char *)10000;
pi = (int *)10000;
pd = (double *)10000;
// 1)
cout << "before pc = " << (void *)pc << " pi = " << pi << " pd = " << pd << endl;
pc++;
pi++;
pd++;
// 2)
cout << "after increase pc = " << (void *)pc << " pi = " << pi << " pd = " << pd << endl;
return 0;
}
在这段代码(1, 2)中,为什么变量 pc
被强制转换为 void 指针?
如果您不打印变量 pc
,我正在检查是否不会发生运行时错误。
最佳答案
因为char*
使用 cout << something
打印时将尝试打印一个字符串( cout << "Hello, World" << endl;
使用 char *
[迂腐,在本例中, const char *
] 表示 "Hello, World"
)。
由于您不想在地址 10000 处打印字符串(它很可能会崩溃),因此代码需要做一些事情来避免将指针用作字符串。
所以通过转换为 void*
你会得到打印的实际地址,这是一般指针类型的默认值,除了 char *
.
关于c++ - 为什么要在这段代码中使用 void 指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25969242/