【发布时间】:2012-03-08 04:33:50
【问题描述】:
struct sniff_ip {
struct in_addr ip_src, ip_dst;
}
function{
const struct sniff_ip *ip;
ip = (struct sniff_ip*)(packet +SIZE_ETHERNET);
}
我的目标是更改 ip_src 和 ip_dst 的值,但是当 src 或 dst 位于结构内的结构中时,我无法弄清楚修改 src 或 dst 的正确语法。我知道访问结构中的成员通常是 ip->member 或 (*ip).member ,但这似乎对我不起作用。如果成员位于结构内的结构中,访问成员的正确过程是什么?
编辑:我想更改 src 和 dst 的 IP 地址(值)。使用
等行时"ip->ip_src="
要么
"ip->ip_src.s_addr=" ,我得到的错误是
"分配只读位置'*ip'
【问题讨论】:
-
您声明了
const struct,因此不允许您进行分配。如果您想分配给它,请不要将您的结构声明为const或做struct sniff_ip * const ip。 -
所以我可以改变ip,但不能改变ip里面的成员?
-
我可以去尝试写一个解释,但最好还是看看这个article。
-
只是一个问题,但是如果您想更改
ip_src和ip_dst的值,为什么要声明*ipconst 呢? -
这是一个作业,大部分代码都准备了一些空白点。我被告知要在所有对象都已声明和初始化时填写空白。我不知道某些结构的初始化方式可能是错误的
标签: c