typedef struct conninfo{int go;int come;char a;} *Pconninfo;int main(int argc, char* argv[]){char buf[10]="123456789";int nTest=((Pconninfo)buf)->come;printf("%d",nTest);return 0;}
3 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
Pconninfo是指针指向的是地址
struct内的数据是顺序存储的,
go完了是come然后a
buf里的数据也是顺序存储的
Pconninfo)buf强制转换,但指针指的还是那个地址
也就是说你算下地址,就应该知道了。
慕慕森
TA贡献1856条经验 获得超17个赞
(Pconninfo)buf是强制类型转换。把从数组buf的首地址开始的一段内存强制转换成Pconninfo类型,
因为在前面使用了typedef ,实际上强制转换成的数据类型是 struct conninfo的指针。
在使用指针输出指针指向的结构体的私有变量时一般用(dd)->xx.的形式。
所以((Pconninfo)buf)->come的值最后代表的是经过强制类型转换后的123456789的内存空间转换成struct conninfo后所对应的come成员的值。
最后结果不确定,因为你并不知道具体是如何编码的。比较麻烦
- 3 回答
- 0 关注
- 77 浏览
添加回答
举报
0/150
提交
取消