c类型转换

在很多C程序钟,都看到这样的用法,如

A 和 B是2个结构

func(A *p)
{
B *pStr;
pStr = (B *)p;

/*对于结构指针pStr的操作*/
.........
}

1、在进行指针类型转化时,需要注意什么?
2、结构A 和 结构B 应该有什么关系么(父类?子类?)?

ps:我倒是知道,经常将入参的指针类型生命为 (void *),然后在函数内部,再将其转换为其他类型的指针。
甚么父类子类的,又不是c++就像一本书,你觉得非常好,可是他觉得很差,书,还是书,没有变,变的是你们两个对书的想法(也就是对这断内存中数据的解析方式不同而已)
哦,的确,这里面不涉及到什么父类、子类的问题,我也只是随便联想了一下。

指针所表达的就是内存中的一个地址,如果是一个相对小的 被 转换成 一个相对大 的,
那么,会出问题么?

会有越界问题么?

我的提问可能不是很清楚,希望可以得到高手的点拨
如果sizeof(A)> =sizeof(B)没有越界问题.否则会引起越界问题的.
这个看使用者是如何做了.
内存象一块面,数据类型象一个模子,同样一块面,使用不同的模子切,会展现不同的形状,需要考虑的是,切面时一定要切在系统允许你切的面上,
1、在进行指针类型转化时,需要注意什么?


你要清楚这两个类型,清楚为什么要转


2、结构A 和 结构B 应该有什么关系么(父类?子类?)?

A B 起码大小以至,一般要求数据格式一致


给你看个例子就完了:

structarpcom {
struct ifnet ac_if;/* network-visible interface */
u_charac_enaddr[6];/* ethernet hardware address */
structin_addr ac_ipaddr;/* copy of ip address- XXX */
structether_multi *ac_multiaddrs; /* list of ether multicast addrs */
intac_multicnt;/* length of ac_multiaddrs list */
};

struct arpcom arp_com;
struct arpcom *p_arp_com = &arp_com;
struct ifnet *ifp = &(arp_com.ac_if);

那么p_arp_com是一个指向arpcom结构的指针,ifp是指向arpcom结构中的ifnet结构的指针。
这两个指针的值是一样的。
这个时候就可以这样用:

struct arpcom arp_com;
struct arpcom *p_arp_com = &arp_com;
struct ifnet *ifp;
.
.
.
ifp = (struct ifnet *)p_arp_com;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值