如何获取指向结构实例的指针的成员?

时间:2010-12-06 14:54:16

标签: c pointers structure

我有一个名为got_packet的回调函数:

void got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet) {
  WMShark *shark = (WMShark *)args;

  WMPacket *foundPacket = [[WMPacket alloc] init];
  foundPacket.packetNumber = [[shark capturedPackets] count];

  foundPacket.timeStamp = header.ts; // <-- PROBLEM IS HERE

  ...

  NSLog(@"%@: %s", shark, packet);
}

我在error: request for member 'ts' in something not a structure or union行上收到编译错误foundPacket.timeStamp = header.ts;


文档说:

  

...
  const struct pcap_pkthdr指向具有以下成员的结构的指针:

     
      
  • ts - 包含捕获数据包的时间的struct timeval
  •   
     

...


如何访问ts?感谢。


对于顽固的C开发人员,方括号在Objective-C中使用,是C的超集。你可以忽略它,在这种情况下它们是初始化器。

3 个答案:

答案 0 :(得分:3)

由于您是指向结构的指针,请使用->运算符而不是.

header->ts

答案 1 :(得分:2)

header是一个指针。您可以像header->ts

一样访问它

答案 2 :(得分:1)

由于header是指向pcap_pkthdr实例的指针,因此需要使用->取消引用,如下所示:

header->ts