C中的一个函数中的类型转换

时间:2015-06-06 00:13:04

标签: c function struct type-conversion typedef

我有一个疑问,是否有可能创建一个

typedef struct whatever

然后如果一个函数需要:

void function(char * something);

在主程序中调用函数时写:

function((char *) whatever);

是正确的吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

没有将结构强制转换为任何指针类型的已定义行为。很可能你的编译器会拒绝这样的强制转换,但是如果它接受了它,那么结果行为就不太可能有用了。

此外,您不能将类型(即whatever)作为函数参数传递。

您可以想象地将指针传递给您的类型的对象:

int main() {
    whatever my_whatever = { 0 };
    function((char *) &my_whatever);
}

对于“工作”的某些定义,这将有效。是否明智取决于function()的实施情况。