gpt4 book ai didi

c - 理解指针算术

转载 作者:行者123 更新时间:2023-11-30 20:04:15 24 4
gpt4 key购买 nike

我正在通读 K&R C。后面有一些示例 fopen代码。有一部分我不是特别理解。

#define OPEN_MAX 20

FILE _iob[OPEN_MAX] = {
{ 0, NULL, NULL, _READ, 0 }, // _READ = 01
{ 0, NULL, NULL, _WRITE, 1 }, // _WRITE = 02
{ 0, NULL, NULL, _WRITE | _UNBUF, 2 } // _UNBUF = 04
};

FILE *fopen(char *name, char *mode)
{
FILE *fp;

for (fp = _iob; fp < _iob + OPEN_MAX; fp++)
/* ... */
}

声明fp < _iob + OPEN_MAX这就是让我绊倒的原因。

  • fp : 文件指针
  • _iob : 文件数组
  • OPEN_MAX : 整数

它似乎是将一个文件数组添加到一个整数,然后评估它是否大于一个文件指针!说法如何fp < _iob + OPEN_MAX可能吗?

最佳答案

  1. 表达式 _iob + OPEN_MAX原因_iob被视为指向该表达式中第一个元素的指针(称为 array-to-pointer decaying )。
  2. 结果 FILE然后指针偏移 OPEN_MAX (+)。
  3. <然后比较两个结果 FILE指针(指针只是底层的整数)。

关于c - 理解指针算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42614377/

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