首页 > 解决方案 > CS50 Wk4 struct 如何知道如何分配内存

问题描述

目前在 wk4 上,有几个问题我在其他地方找不到答案。

在问题集中,Bitmapinfoheader 被定义为一个结构

typedef struct
{
    DWORD  biSize;
    LONG   biWidth;
    LONG   biHeight;
    WORD   biPlanes;
    WORD   biBitCount;
    DWORD  biCompression;
    DWORD  biSizeImage;
    LONG   biXPelsPerMeter;
    LONG   biYPelsPerMeter;
    DWORD  biClrUsed;
    DWORD  biClrImportant;
} __attribute__((__packed__))
BITMAPINFOHEADER;

在包含代码本身的文件中,我们创建一个这种类型的变量,然后在该变量中读取输入文件。

BITMAPFILEHEADER bf;
    fread(&bf, sizeof(BITMAPFILEHEADER), 1, inptr);

我不明白的是 抱歉,无法在帖子中嵌入图片,但这是链接

fread 怎么知道前两个字节是 biSize,接下来的 x 个字节是 biWidth?fread 如何解析字节并知道将读取的字节放入哪个元素?

仍然是一个尝试学习的大量初学者,所以感谢您的帮助!

标签: ccs50

解决方案


fread不知道字节是什么意思。它不解析任何东西。它只是将一些字节 ,sizeof(BITMAPFILEHEADER)放入内存位置bf

编译器知道有多少字节BITMAPFILEHEADER大小,并且可以用sizeof(BITMAPFILEHEADER)该数字替换,然后将其传递给fread.


推荐阅读