Cでの「&」の意味(ここにはLinuxカーネル機能に似たマクロがあります)[閉じる]

Cでの「&」の意味(ここにはLinuxカーネル機能に似たマクロがあります)[閉じる]
#define TCP_SKB_CB( __skb )   ((struct tcp_skb_cb *)&((__skb)->cb[0]))

&この場合、これはどういう意味ですか?

ここに画像の説明を入力してください。

答え1

これは標準Cの「アドレス」演算子です。上記の構造は以下を意味します。

  1. __skb:マクロに割り当てられたパラメータ(次を指す)struct skbuff)
  2. (__skb)->cb: cbskbの配列
  3. (__skb)->cb[0]: 配列の最初の要素
  4. &((__skb)->cb[0]): 最初の要素のアドレス
  5. ((struct tcp_skb_cb *)&((__skb)->cb[0])):最初の要素のアドレスで、ポインタに変換されます。struct tcp_skb_cb

関連情報