gpt4 book ai didi

c - 一行C代码的逻辑

转载 作者:太空宇宙 更新时间:2023-11-04 05:31:21 25 4
gpt4 key购买 nike

能不能告诉我在this code中使用sizeof data/sizeof *data的逻辑第 17 行?

...
unsigned char data[16];
...
size = fread(data, sizeof *data, sizeof data / sizeof *data, file);
...

谢谢

最佳答案

这是“数组中元素的数量”的常见 C 习语。

由于数组 decays to a pointer在最轻微的挑衅下,*data 是数组的第一个元素,因此它将数组的总大小除以其第一个元素的大小,给出元素的计数。

对于这种技术有许多可能的反对意见,无论是基于风格原因,事实上它只适用于声明为数组的变量(而不是那些作为指向第一个元素的指针传递的变量——它依赖于衰减到-指针还没有发生),或者 C++ 代码中可能的破坏场景;也就是说,它在旧的 C 代码中仍然很常见。

关于c - 一行C代码的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4623127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com