如何在struct - C中访问struct的成员

时间:2012-02-16 18:34:57

标签: c

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的值,但是当它在struct中的struct中时,我无法弄清楚修改src或dst的正确语法。我知道访问结构中的成员通常是ip->成员或(* ip).member,但这似乎对我不起作用。在结构中的结构中访问成员的正确过程是什么?

编辑:我想更改src和dst的ip地址(值)。使用

等行时

“IP-> ip_src =”
要么 “ip-> ip_src.s_addr =”,我得到错误 “分配只读位置'* ip'

3 个答案:

答案 0 :(得分:3)

您只需将操作员组合到正确的位置:

ip->ip_src.s_addr

答案 1 :(得分:0)

struct in_addr other_addr;
ip->ip_src = other_addr;

答案 2 :(得分:0)

你的问题是:

const struct sniff_ip *ip;

而不是:

struct sniff_ip const *ip = ...;

在您当前的声明中,您有ip,指向const类型的struct sniff_ip数据。