c - 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 如何解析字节并知道将读取的字节放入哪个元素?
仍然是一个尝试学习的大量初学者,所以感谢您的帮助!
解决方案
fread
不知道字节是什么意思。它不解析任何东西。它只是将一些字节 ,sizeof(BITMAPFILEHEADER)
放入内存位置bf
。
编译器知道有多少字节BITMAPFILEHEADER
大小,并且可以用sizeof(BITMAPFILEHEADER)
该数字替换,然后将其传递给fread
.
推荐阅读
- mongodb - mongo 复合索引会为每个字段单独工作吗?
- c# - 如何在 dotnet Core 中更改 UnhandledExceptionin 的默认 EventId?
- javascript - React/React Context API:使用 useEffect() 钩子时等待上下文值
- google-api - 无法为测试 G Suite 市场项目触发全域安装
- python - 我想将这些输出转换为列表
- push-notification - FCM - 为什么在较新的 Firebase Admin SDK 中不再支持 FCM 直接通道?
- php - 如何在 laravel DB::select 查询中传递 foreach
- jtag - Trace32:如何使用 t32apinet 以编程方式获取维护密钥到期月份和年份?
- or-tools - 如何在 OR-Tools Routing Solver 中实现自定义软约束?
- python - 使用 .loc 的 Pandas 数据框分配因 MultiIndex 而失败