2824|7

348

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

C语言语法分析 [复制链接]

SPLASH_HEADER SplashHeader;  // 这是一个结构体类型

read_dpp3430_i2c(DPP3430_DEV_ADDR, READ_SPLASH_SCREEN_HEADER, &Param, 1, (uint08 *)&SplashHeader, sizeof (SplashHeader));  // 这是一个函数调用

请问(uint08 *)&SplashHeader是什么意思?sizeof (SplashHeader)是什么意思?

结构体内部为:

typedef struct
{
    uint16  Image_width;    /**< width of image in pixels */
    uint16  Image_height;   /**< height of image in pixels */
    uint32  Byte_count;     /**< number of bytes starting at "data" */
    uint08  Pixel_format;   /**< format of pixel data */
                            /**< 0 = 24-bit unpacked: 0x00RRGGBB Not supported by DDP2230/DDPDDP243x*/
                            /**< 1 = 24-bit packed:   RGB 8-8-8 */
                            /**< 2 = 16-bit:          RGB 5-6-5   DDP3020 only */
                            /**< 3 = 16-bit:          YCrCb 4:2:2 DDP2230/DDPDDP243x only */
    uint08  Compression;    /**< compression of image */
                            /**< SPLASH_FORCE_UNCOMPRESSED  = uncompressed */
                            /**< SPLASH_FORCE_RLE           = RLE compressed */
                            /**< SPLASH_USER_DEFINED        = User Defined Compression */
                            /**< SPLASH_FORCE_RLE_2PIXEL    = RLE compressed 2Pixel */

    uint08  ByteOrder;      /**< 0 - pixel is 00RRGGBB - DDP3020 */
                            /**< 1 - pixel is 00GGRRBB - DDP2230/DDPDDP243x */
    uint08  ChromaOrder;    /**< Indicates chroma order of pixel data (DDP2230/DDPDDP243x only) */
                            /**< 0 - Cr is first pixel (0xYYRR) */
                            /**< 1 - Cb is first pixel (0xYYBB) */
} SPLASH_HEADER;
此帖出自51单片机论坛

最新回复

你问的这个问题,相当于问,当一个结构体作为 sizeof 的操作数 的时候,是什么结果。 其实说真的,这种问题很纠结,我也不知道怎么回答。 但是,有两个思路可以推荐给你的。 1.实际把这个sizeof结果打印出来,或者debug查看变量,你就知道了。看着这个数值和这个结构体的结构你应该很快能猜出来; 2.类比 sizeof(指针) sizeof(数组),你也应该可以理解。 我稍微多说一点,sizeof不是一个函数,而是一个运算符,对,就是和 + - 那样的运算符。 另外,sizeof 计算的是 该 变量或者数据类型 占据的空间大小,单位byte 这个,倒不是出自什么权威文件,只是实际经验总结。 比如 sizeof(char) 一般等于1 char s[8]; sizeof(s) = 8; char *p; sizeof(p) 一般等于 4,因为它是指针 即使 p = s; sizeof(p) 仍然是 4 同样的,我们可以这样 sizeof(char)还是1,sizeof(char *)还是4. 这说明,sizeof不仅可以对 变量,也可以对 数据类型本身。 所以回到你问的,用在结构体上的问题就是 不管是你的 结构体变量名sizeof,还是这个结构体类型名 sizeof 也是一样的。   详情 回复 发表于 2016-7-13 10:08
点赞 关注
 

回复
举报

7815

帖子

57

TA的资源

裸片初长成(中级)

沙发
 
打开百度搜索

C语言 sizeof
此帖出自51单片机论坛

点评

sizeof的作用知道一点,但是用在结构体上面,我就不明白了  详情 回复 发表于 2016-7-12 15:32
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

578

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
(uint08 *)&SplashHeader 强制类型转换 百度一下
此帖出自51单片机论坛
 
个人签名刻苦学习,共同进步
 
 

回复

348

帖子

0

TA的资源

一粒金砂(高级)

4
 
辛昕 发表于 2016-7-12 15:03
打开百度搜索

C语言 sizeof

sizeof的作用知道一点,但是用在结构体上面,我就不明白了
此帖出自51单片机论坛

点评

计算整段的size 即多少个char  详情 回复 发表于 2016-7-12 15:37
 
 
 

回复

164

帖子

0

TA的资源

一粒金砂(中级)

5
 
火火山 发表于 2016-7-12 15:32
sizeof的作用知道一点,但是用在结构体上面,我就不明白了

计算整段的size
即多少个char
此帖出自51单片机论坛
 
 
 

回复

109

帖子

1

TA的资源

一粒金砂(中级)

6
 
  sizeof (SplashHeader):计算结构体SplashHeader占用多少个字节空间

(uint08 *)&SplashHeader:&SplashHeader表示取这个结构体的地址,(uint08 *)表示将这个地址强制转换成uint08 *指针类型的

此帖出自51单片机论坛
 
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

7
 
閺屻儳婀呴張顒€绗橀崗銊╁劥鐠併劏顔戦敍宀冾嚞閻ц缍�閹存牞鈧拷濞夈劌鍞�
此帖出自51单片机论坛

点评

谢谢版主,很棒  详情 回复 发表于 2016-7-13 10:46
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

348

帖子

0

TA的资源

一粒金砂(高级)

8
 
閺屻儳婀呴張顒€绗橀崗銊╁劥鐠併劏顔戦敍宀冾嚞閻ц缍�閹存牞鈧拷濞夈劌鍞�
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
艾睿电子& Silicon Labs 有奖直播 | 全新蓝牙信道探测:从技术创新到实际应用
直播时间:3月12日(周三)上午10:00
直播奖励:多功能榨汁机、蓝牙音箱、手机支架

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表