在C中比较两个指针[关闭]

tuwxkamq  于 2023-03-29  发布在  其他
关注(0)|答案(1)|浏览(144)

**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
3天前关闭。
截至3天前,社区正在审查是否重新讨论此问题。
Improve this question
如果某个指针变量大于另一个指针变量,我可以比较两个指针吗?下面是一个简单的例子:

#include <stdio.h>

int main()
{
    int age;
    int allowedAge = 18;
    int* pointerAge = &age;
    int* pointerAllowed = &allowedAge;
    
    printf("How old are you?\n");
    scanf("%d", pointerAge);
    
        if(pointerAge < pointerAllowed)
        printf("You are only %d so you cannot drink any alcohol\n", *pointerAge);
        else
        printf("You are %d so you can drink\n", *pointerAge);
        
    return 0;
}
c3frrgcw

c3frrgcw1#

如果某个指针变量大于另一个指针变量,我可以比较两个指针吗?
否。比较指针的伟大性是undefined behavior(UB),除非这些指针在同一个对象中,例如指向数组(或过去)中元素的指针。
然而,给定OP的printf(),编码的目标不是**比较指针,而是比较它们指向的对象。

// if(pointerAge < pointerAllowed)
    if (*pointerAge < *pointerAllowed)

相关问题