Pointers 指向结构的指针

Pointers 指向结构的指针,pointers,structure,extern,Pointers,Structure,Extern,我正在努力学习一个我没有写过的代码 在下面的代码中,定义了一个结构ICB_CMD_uu,然后*ICB_PCMD是指向ICB_CMD_uu的ICB_PCMD指针 typedef struct ICB_CMD_ { UINT8 u8MsgId; UINT8 u8Addr; UINT8 u8Length; UINT8 u8MainCmd; UINT8 u8SubCmd; UINT8 au8Data[BUFFER_LENGTH-5]; //5

我正在努力学习一个我没有写过的代码

在下面的代码中,定义了一个结构ICB_CMD_uu,然后*ICB_PCMD是指向ICB_CMD_uu的ICB_PCMD指针

typedef struct ICB_CMD_
{
    UINT8  u8MsgId;
    UINT8  u8Addr;
    UINT8  u8Length;
    UINT8  u8MainCmd;
    UINT8  u8SubCmd;
    UINT8  au8Data[BUFFER_LENGTH-5];  //5: ENQ/ACK/NAK ID #BYTES CRCH CRCL  BUFFER_LENGTH=200
}*ICB_PCMD;
那么

EXTERN ICB_PCMD icb_pRxCmd;
EXTERN ICB_PCMD icb_pTxCmd;
下面两行是做什么的


非常感谢。

在上面的代码中,
*ICB_PCMD
是指向
结构ICB_CMD
类型的指针类型,它尚未初始化

extern
使变量在其他源模块中可见

在此代码中,可以使用两种声明方式:

struct ICB_CMD_*var2

ICB_PCMD var3

两个指针:

extern ICB_PCMD ICB_pRxCmd

exterb ICB_PCMD ICB_pTxCmd

是外部的,这意味着它们在其他文件中声明,但现在(使用
extern
)可以在当前源模块中访问。“extern”关键字允许您访问在其他源文件中声明的变量

以下是一些关于该主题的有用阅读材料:

堆栈溢出-
堆栈溢出-

谢谢,所以icb_pRxCMd和icb_pTxCmd也是指向结构icb_CMD的指针?如果准确地说,它们是
*icb_PCMD
类型的指针,它是指向
结构icb_CMD
的指针,请参见我编辑的答案,*icb_PCMD在本例中也是指针的类型。