关于编译器的变量地址的问题
reen 2005-05-17 10:42:51 源码如下:
struct contain
{
char *saddr;
char *daddr;
int ttl;
int id;
};
struct header
{
char *saddr;
char *daddr;
int ttl;
int id;
int dport;
};
在主函数main()中定义了两个变量
struct header h;
struct contain con;
对他们的赋值分别如下
h.saddr=p.GetSourceIP();//在抓到第一个网络数据包时赋值
con.saddr=p.GetSourceIP();//在抓到第二个网络数据包时赋值
GetSourceIP()的原形如下
char *PacketDecode::GetSourceIP()
{
return inet_ntoa(*(in_addr*)&(ih->saddr));//ih 是已经获得的网络数据包头
}
问题如下:
每次对con.saddr赋值时 h.saddr也会发生同样的变化
观察发现 con.saddr 和 h.saddr 会地址一样
难道编译器会将两个变量给同一个地址?