关于C语言中结构体的相关说明

 

主要针对C语言的结构体说明几点常见的问题。...



好久没打篮球了,下午跟堂弟去大学城打球,被虐爆了,脚也抽筋了;晚上吃完猪蹄,洗个热水澡,清爽之余玩下公众号!哈哈

1. 结构体可以嵌套使用,即结构体1的成员变量类型可以是结构体2;而结构体2的成员变量类型还可以是结构体3,逐层嵌套。

typedef struct

{

结构体2名  结构体2变量名;

...

}结构体1名;

typedef struct

{

结构体3名  结构体3变量名;

...

}结构体2名;

2. 结构体的定义一般在相应的头文件中编写,而用结构体来声明一个具体的结构体变量时,一般在其源文件中编写。

在头文件a.h中定义结构体struct_1;

在源文件a.c中可以定义结构体变量:

struct_1 structName1,structName2,...。

3. 在IAR开发环境中,不能定义空结构体,即结构体必须至少有一个成员变量。

typedef struct

{

//无成员变量

}结构体名;//错误的

4. 在IAR中,作为结构体1成员变量的结构体2,须在结构1前面定义结构体2。

类似于在主函数中调用其他应用函数一样,应用函数要么在主函数前定义;要么在主函数后面定义,但此时要在主函数前加上函数声明语句。

5. 结构体可以用于结构体指针、结构体数组、结构体函数等。

A. 函数返回类型为结构体:

返回一个结构体,只能返回这个结构体的指针,即该结构体变量的首地址。

结构体名*  函数名()

{

 ...

return (结构体名*)...;

}

ST_OPP_NETWORK_L3_ADDR*  OppNetGetThisNodeNetL3Addr(VOID)

 {

    return (ST_OPP_NETWORK_L3_ADDR*)(&g_stThisNodeObjectID);

 }

B. 函数形参为结构体变量名,结构体指针变量,或结构体引用变量:

(1) .函数返回类型  函数名(结构体名1 *指针变量名1, 结构体名2 *指针变量名2)

{

      ...

    } 

 U32  OppSessionRecvData(ST_OPP_NETWORK_L3_ADDR*  pstSrcL3Addr, 

    ST_OPP_NETWORK_L3_ADDR*  pstDstL3Addr, U8* pucData, U32 ulDataLen)

{

...

}

(2). 函数返回类型  函数名(结构体名1 结构体变量名1, 结构体名2 结构体变量名2)

     {

         ...

      } 

(3). 函数返回类型  函数名(结构体名1 &引用变量名1, 结构体名2 &引用变量名2)

{

      ...

     } 

6. 关于结构体的其他问题,如定义、初始化和引用等,请参考相关资料。


    关注 软硬兼施


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册