c语言结构体数组怎么初始化,c语言结构体数组初始化「建议收藏」

c语言结构体数组怎么初始化,c语言结构体数组初始化「建议收藏」最近看一段代码有所迷惑,先简单总结一下。有关结构体数组初始化的问题struct_m_usmart_nametabusmart_nametab[]={#ifUSMART_USE_WRFUNS==1//如果使能了读写操作(void*)read_addr,”u32read_addr(u32addr)”,(void*)write_addr,”voidwrite_addr(u32addr,…

大家好,又见面了,我是你们的朋友全栈君。

最近看一段代码有所迷惑,先简单总结一下。有关结构体数组初始化的问题

struct  _m_usmart_nametab usmart_nametab[]=

{

#if USMART_USE_WRFUNS==1 //如果使能了读写操作

(void*)read_addr,”u32 read_addr(u32 addr)”,

(void*)write_addr,”void write_addr(u32 addr,u32 val)”,

#endif

(void*)delay_ms,”void delay_ms(u16 nms)”,

(void*)delay_us,”void delay_us(u32 nus)”,

(void*)LCD_Clear,”void LCD_Clear(u16 Color)”,

(void*)LCD_Fill,”void LCD_Fill(u16 xsta,u16 ysta,u16 xend,u16 yend,u16 color)”,

(void*)LCD_DrawLine,”void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2)”,

(void*)LCD_DrawRectangle,”void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2)”,

(void*)Draw_Circle,”void Draw_Circle(u16 x0,u16 y0,u8 r)”,

(void*)LCD_ShowNum,”void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size)”,

(void*)LCD_ShowString,”void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p)”,

(void*)LCD_ReadPoint,”u16 LCD_ReadPoint(u16 x,u16 y)”,

(void*)fsmc_sram_test_write,”void fsmc_sram_test_write(u8 data,u32 addr)”,

(void*)fsmc_sram_test_read,”u8 fsmc_sram_test_read(u32 addr)”,

(void*)mymalloc,”void *mymalloc(u8 memx,u32 size)”,

(void*)myfree,”void myfree(u8 memx,void *ptr)”,

(void*)mf_mount,”u8 mf_mount(u8 drv)”,

(void*)mf_open,”u8 mf_open(u8*path,u8 mode)”,

(void*)mf_close,”u8 mf_close(void)”,

(void*)mf_read,”u8 mf_read(u16 len)”,

(void*)mf_write,”u8 mf_write(u8*dat,u16 len)”,

(void*)mf_opendir,”u8 mf_opendir(u8* path)”,

(void*)mf_readdir,”u8 mf_readdir(void)”,

(void*)mf_scan_files,”u8 mf_scan_files(u8 * path)”,

(void*)mf_showfree,”u32 mf_showfree(u8 *drv)”,

(void*)mf_lseek,”u8 mf_lseek(u32 offset)”,

(void*)mf_tell,”u32 mf_tell(void)”,

(void*)mf_size,”u32 mf_size(void)”,

(void*)mf_mkdir,”u8 mf_mkdir(u8*pname)”,

(void*)mf_fmkfs,”u8 mf_fmkfs(u8 drv,u8 mode,u16 au)”,

(void*)mf_unlink,”u8 mf_unlink(u8 *pname)”,

(void*)mf_rename,”u8 mf_rename(u8 *oldname,u8* newname)”,

(void*)mf_gets,”void mf_gets(u16 size)”,

(void*)mf_putc,”u8 mf_putc(u8 c)”,

(void*)mf_puts,”u8 mf_puts(u8*c)”,

};

_m_usmart_nametab的结构体如下

//函数名列表

struct _m_usmart_nametab

{

void* func; //函数指针

const u8* name; //函数名(查找串)

};

一开始一直不明白,为什么下边的只有两个参数,而上边的确有那么多,难道不是一一对应?

其实上边的是一个table表,就像 u8 table[]={};

而上边的定义的是一个结构体的数组,其成员很多。但每一个成员应该和结构体类型一致,这只不是定义一个这样结构类型的结构体数组而已。

看下面例子

typedef struct _TEST_T {

int i;

char c[10];

}TEST_T;

TEST_T gst = {1, “12345”};//可以初始化,设置i为1,s为一个字符串.

TEST_T gst = {1};//初始化个数少于实际个数时,只初始化前面的成员。

TEST_Tgst = {.c=“12345”};//有选择的初始化成员。

复合字面量。

gst = (TEST_T){122, “1256”};//这是一个赋值语句,也可以作为初始化。可以出现在程序的任何地方。

当然也可以使用复合字面量来初始化:

gst = (TEST_T){.i=122, .c=”123″};

3、结构体数组

可以用多个大括号括起来:

TEST_T gst[10] = {
{},{},{},{}}

也可以初始化其中的一个元素:

TEST_T gst[10] = {[2]={}, [3]={}}

也可以使用复合字面量:

TEST_T gst[10] = {[2].i=0, [3].i={}}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161080.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 初识js中的闭包_Js闭包中变量理解

    初识js中的闭包_Js闭包中变量理解今天看了关于js闭包方面的文章,还是有些云里雾里,对于一个菜鸟来说,学习闭包确实有一定的难度,不说别的,能够在网上找到一篇优秀的是那样的不易。当然之所以闭包难理解,个人觉得是基础知识掌握的不牢,因为

    2022年8月6日
    10
  • JS中对象转数组方法总结[通俗易懂]

    JS中对象转数组方法总结[通俗易懂]方法一:Array.from()方法例:letobj={0:’nihao’,1:’haha’,2:’gansha’,’length’:3}letarr=Array.from(obj)console.log(arr);注意:1.object中必须有length属性,返回的数组长度取决于length长度2.key值必须是…

    2022年9月12日
    0
  • 《周易》中的人生智慧_感悟人生的句子 励志

    《周易》中的人生智慧_感悟人生的句子 励志1.君子藏器于身,待时而动。——《易传·系辞传下》解释:君子蕴藏着弘大的才华在身上,等待时机的来临,而有所动。2.二人同心,其利断金。同心之言,其臭(xiu)如兰。——《易传·系辞传上》解释:二人同心,其锋利程度足以切断坚硬的金属。同心同德,精诚团结,心意齐同的人在一起谈话,给人的感觉就像嗅到芬芳的兰花香味一般。3.天行健;君子以自强不息。——《易传·象传上》解释:天道运行周而复始,永…

    2022年8月18日
    3
  • 博弈论基础mooc答案_博弈论考试题及答案

    博弈论基础mooc答案_博弈论考试题及答案1、“博弈的本意是什么?A、摔跤B、下棋C、赌博D、游戏参考答案:B2、古时“弈”字,就是指A、跳棋B、象棋C、五子棋D、围棋参考答案:D3、按照博弈方是否达成有约束力的协议,可以分为()A、理性博弈和非理性博弈B、完全信息博弈和不完全信息博弈C、动态博弈和静态博弈D、合作博弈与非合作博弈参考答案:D4、囚徒困境的例子属于()的典型A、非合作博弈B、合作博弈C、理性博弈D、动态博弈参考答案:A5、“石头剪刀布游戏,属于()。A、贯序博弈B、动态博弈…

    2022年10月15日
    0
  • springboot的启动流程及原理_精馏的原理及流程

    springboot的启动流程及原理_精馏的原理及流程1.springboot的启动类入口@SpringBootApplication@ComponentScan(basePackages={“cn”})publicclassSpringBootDemo{publicstaticvoidmain(String[]args){SpringApplication.run(SpringBootDemo.class);}}可以看出,Annotation定义(@SpringBootApplicati

    2022年8月21日
    3
  • 什么是友元类[通俗易懂]

    什么是友元类[通俗易懂]======================什么是友元类=======================     当一个类B成为了另外一个类A的“朋友”时,那么类A的私有和保护的数据成员就可以被类B访问。我们就把类B叫做类A的友元。=======================友元类能做什么=======================     友元类可以通过自己的方法来

    2025年5月26日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号