char *buf; (IpHeader *)buf ;这种指针类型的变换代表什么意思?

[复制链接]
查看11 | 回复3 | 2011-11-24 00:16:27 | 显示全部楼层 |阅读模式
同意楼上。指针类型的意义一定程度上体现在它所指向目标的类型。char *buf声明一个变量buf,该变量所存放的内容默认被解释为一个字符型变量在内存中的(首)地址;(lpHeader *)buf将buf所存放的内容取出并解释为一个lpHeader类型变量在内存中的(首)地址——但buf本身仍然为原来的数据类型。如果lpHeader是一个结构体变量类型,且它的第一个成员元素是char类型,而且全部代码中直接使用lpHeader整体的机率极小,或者用到的地方不方便添加新的变量声明,则可以不去专门声明一个lpHeader类型的指针变量,而暂时用这种指针类型的强制转换来作为权宜之计。 额,原来楼主想问这个问题。。。在谷歌上搜了一下,看起来和他们...
回复

使用道具 举报

千问 | 2011-11-24 00:16:27 | 显示全部楼层
buf在声明之后指向一个char型变量(初值未知),在使用buf时用到了那个char型变量对应的内存的首地址;当把它强制转换成(IpHeader *)类型使用时,用到了以那个char对应的字节为首地址,长度为IpHeader 类型的长度的一段内存。 -----------------------------------------IpOpti...
回复

使用道具 举报

千问 | 2011-11-24 00:16:27 | 显示全部楼层
这种强制转换操作一般是为了赋值等操作时使数据兼容,转换后指向的地址和存储的数据是不改变的。IpHeader类型应该与char类型数据长度相同,否则强制转换后还是会有问题的。通常一些自定义类型的数据编译系统不能识别与其他类型可以相互赋值,强制转换后就不会报错了。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行