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;
此帖出自
小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
C语言 sizeof
sizeof的作用知道一点,但是用在结构体上面,我就不明白了
计算整段的size
即多少个char
你问的这个问题,相当于问,当一个结构体作为 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 也是一样的。
一周热门 更多>