gpt4 book ai didi

C比较两个大于如果一个为空的指针

转载 作者:行者123 更新时间:2023-12-01 23:15:05 24 4
gpt4 key购买 nike

如果我比较 C 中的两个指针,我知道 C 6.5.8/5 说:

pointers to structure members declared later compare greater than pointers to members declared earlier in the structure

这很好,但如果其中一个指针是 NULL 怎么办?我知道我可以做到 foo != NULL 但例如这是否违反标准:

char *bar = NULL;
char *foo = "foo";
if(foo > bar) { function(); }

该部分没有具体解决 NULL 在大于的情况下,这就是我感到困惑的原因。另外,如果您能告诉我它是否适用于 C89 和 C99。

澄清一下,这与只是我引用的标准的一部分的结构无关。该代码与我上面描述的非常相似。我有一些指向数组的指针,其中一个指针可能为空,因此我想知道是否可以使用大于进行比较。

最佳答案

您的示例确实未定义。正如 C11, 6.5.8., p5 中所解释的,每条规则都要求指针指向同一个对象或过去那个物体。

因此,可以使用关系运算符比较两个指针:<, >, <=, >= , 仅当 它们指向同一个对象 或超过该对象时。在所有其他情况下:

6.5.8. Relational operators,

  1. . In all other cases, the behavior is undefined.

值为NULL的指针,一个空指针,不指向一个对象。这在:

6.3.2.3 Pointers

  1. If a null pointer constant is converted to apointer type, the resulting pointer, called a null pointer, is guaranteed to compare unequalto a pointer to any object or function.

关于C比较两个大于如果一个为空的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35251668/

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