C 中“&”的含义(这里是类似 Linux 内核函数的宏)

C 中“&”的含义(这里是类似 Linux 内核函数的宏)
#define TCP_SKB_CB( __skb )   ((struct tcp_skb_cb *)&((__skb)->cb[0]))

&在这种情况下这意味着什么?

在此输入图像描述

答案1

这是标准的 C“地址”运算符...上面的结构意味着:

  1. __skb:赋予宏的参数(指向struct skbuff
  2. (__skb)->cbcbskb中的数组
  3. (__skb)->cb[0]:数组中的第一个元素
  4. &((__skb)->cb[0]):第一个元素的地址
  5. ((struct tcp_skb_cb *)&((__skb)->cb[0])):第一个元素的地址,转换为指向 a 的指针struct tcp_skb_cb

相关内容