这里(how to cast from one type to another in c)我们有几乎相同的问题,但没有解释结构类型转换是如何工作的。
#include <stdio.h>
#include <ctype.h>
typedef struct {
int Type;
int Type2;
}foo;
typedef struct {
char cData[40];
}bar;
int main()
{
bar b1;
strcpy(b1.cData,"11");
(struct foo *) &b1; // What is going on here? What have changed at this point?
return 0;
}
我们有不同的尺寸 - sizeof(foo)&gt; sizeof(bar)。那么铸造后会发生什么?
答案 0 :(得分:2)
您无法将一种结构类型转换为另一种结构类型。你只能将一个指针转换成一个结构类型指向另一个结构类型,在这种情况下它实际上没有发生 - 它只是一个内存地址,它被重新解释为指向另一种类型事情。