首页 > 编程知识 正文

c语言矩阵初始化,c语言结构体怎么用

时间:2023-05-04 09:30:01 阅读:114530 作者:3152

最近看了代码犹豫了,所以简单总结一下。 结构数组初始化问题

struct _ m _ u smart _ nametabusmart _ name tab [ ]=

{

#if USMART_USE_WRFUNS==1 //如果读写操作已启用

(void* ) read_addr,' u32read_addr ) ) u32addr )、

(void* ) write_addr、' voidwrite_addr(u32addr,u32 val )、

#endif

(void* ) delay_ms、' voidDelay_ms ) u16NMS )、

(void* ) delay_us、' voidDelay_us(u32nus )、

(void* ) LCD_Clear、' voidLCD_clear(u16color )、

(void* ) LCD_Fill、' void LCD _ fill ' u16 ysta、u16 ysta、u16 xend、u16 yend、u16 color ) ),

(void** )液晶屏_ drawline、' void液晶屏_ drawline (u16x 1、u16 y1、u16 x2、u16 y2 ),

(void* ) LCD_DrawRectangle、' voidLCD_drawrectangle(U16x1、u16 y1、u16 x2、u16 y2 ) ),

(void* ) Draw_Circle、' voiddraw_circle ) u16 y0、u16 y0、u8 r )、

(void* ) LCD_ShowNum、' voidLCD_shownum(U16x、u16 y、u32 num、u8 len、u8 size ) )、

(void* ) LCD_ShowString,' voidLCD_showstring(U16x,u16 y,u16 width,u16 height,u8 size,u8 *p ) ',

(void* ) LCD_ReadPoint、' U16LCD_readpoint(U16x,u16 y )、

(void* ) fsmc_sram_test_write,' voidfsmc _ SRAM _ test _ write (u8数据,u32 addr ),

(void* ) fsmc_sram_test_read,' U8FSMC_SRAM_test_read(U32ADDR ),

(void* ) mymalloc、' void*mymalloc(U8memx,u32 size )、

(void* ) myfree、' void my free ' u8 memx、void *ptr )、

(void* ) mf_mount、' mf_mount ) U8drv )、

(void* ) mf_open、' mf_open ) U8*path、u8 mode )、

(void** ) mf_close,' mf_close ) ) void )、

(void* ) mf_read、' U8MF_read(U16Len )、

(void* ) mf_write、' U8MF_write(U8*dat,u16 len )、

(void* ) mf_opendir、' mf_opendir ) U8*path )、

(void* ) mf_readdir、' U8MF_readdir(void )、

(void* ) mf_scan_files、' mf_scan_files ) U8*path )、

(void* ) mf_showfree、' U32MF_showfree(U8*drv )、

(void* ) mf_lseek、' U8MF_lseek(U32offset )、

(void** ) mf_tell,' u32MF_tell ) ) void )、

(void** ) mf_size,' u32MF_size ) void )、

(void* ) mf_mkdir、' U8MF_mkdir(U8*pname )、

(void* ) mf_fmkfs、' mf_fmkfs ) U8drv、u8 mode、u16 au )、

(void* ) mf_unlink、' U8MF_unlink(U8*pname )、

(void* ) mf_rename、' mf_rename ) U8*oldname、u8* newname )、

(void* ) mf_gets、' voidMF_gets(u16size )、

(void* ) mf_putc、' U8MF_putc(U8c )、

(void* ) mf_puts、' mf_puts ) U8*c )、

(;

_m_usmart_nametab的结构体如下

//函数名称列表

struct _m_usmart_nametab

{

void* func; //函数指针

常数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={}}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。