c语言 结构体的使用

上一次,在看液晶的驱动程序的时候,了解了结构体其实跟数组一样是按地址顺序排列的.只不过,结构体里的成员变量 是长短不一的,而不像数组都是统一长度. 

        在一个新的项目中,因为发送数据的长度,存在长短不一,每个成员的名称和功能又不一样,所以觉得在这里使用结构体合适一点.

定义了一给结构体类型:

typedef struct 

{

u16 send_fpga_x_start;

u16 send_fpga_y_start;

u16 send_fpga_x_end;

u16 send_fpga_y_end;

u16 scaler_V_DISP_in;

u16 scaler_H_DISP_in;

u16 scaler_VSFACTOR;

u16 scaler_HSFACTOR;

} video_size;

这是是需要计算出来并发送给串口的值,这样定义可比数组更加的直观.

            然后,video_size self_size  定义一个实体 ,通过函数.calculate()把数据计算出来,存放在这个实体里.然后通过send_parameter(),用串口,以字节为单位发送给fpga.这就需要传递,如果使用地址传递结构体指针.

           首先,calculate(u16 *p) 定义了一个u16 的地址指针,表示每个地址指向的是一个u16的存储单元.然后,在使用的时候,calculate((u16 *)&self_size).结构体并不像数组,名称就是地址.而是需要取地址,再强制转换地址类型.  最后,send_parameter((u16 *)&self_size),

           还有第二种定义使用的方法:calculate(video_size *p),这样就可以直接使用了.calculate(&self_size).


算是亲身经历吧,结构体在某些环境下使用的确要比用数组让人感觉舒服.

   



       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值