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

관련 정보