【发布时间】:2012-05-03 18:02:07
【问题描述】:
我遇到了一些我不太理解的 C 代码。以下编译并运行得很好。 1) 为什么我可以将 char* 转换为 struct* 和 2) 使用这个成语而不是 void* 有什么好处?
struct foo
{
int a;
int b;
char *nextPtr;
};
. . .
// This seems wrong
char *charPtr = NULL;
// Why not
//void *structPtr = NULL;
struct foo *fooPtr;
fooPtr = (struct foo*)charPtr;
// 编辑删除字符串部分,因为这不是问题的重点。
【问题讨论】:
-
什么是
string?这是 C 还是 C++? -
您可以使用 C 风格的强制转换语法将任何东西强制转换为任何东西。编译器只是信任你。在
void*发明之前有一段时间使用char*代替,但那个时间已经过去了。 -
抱歉,如果相关,请使用 c++。
-
我看不到你的代码是如何运行的,你写到 fooPtr->a,但是 fooPtr 是 NULL。
标签: c