指针之间的比较

标签 c pointers data-structures deque

我正在通过数组在 c 中实现出队。 left 和 right 是指向出队的最左边和最右边元素的指针。 show() 函数接收左指针和右指针。当我在 void show(int *l,int *r) 中尝试以下操作时,该函数会产生错误的输出 -

int *t;
for(t=l;t<r;t++);
    {
        printf("%d-->",*t);
    }
        printf("%d\n",*t);

但是当我尝试这个时它起作用了-

for(t=l,i=0;i<r-l;i++,t++)
        printf("%d-->",(*t));
        printf("%d\n",*r);

显然,第一个代码中的指针之间的比较不起作用,即使它们指向同一数组的成员,为什么会出现这种情况?

编辑-这是整个函数

void show(int *l,int *r)
{
    if(l==r && r==NULL)
    {
        printf("underflow\n");
    }
    else
    {

        int *t,i;
        for(t=l;t!=r;t++);
        {
                printf("%d-->",*t);
        }
        printf("%d\n",*r);

/*      for(t=l,i=0;i<r-l;i++,t++)
            printf("%d-->",(*t));
        printf("%d\n",*r);*/
    }
}

注释掉的区域在 show() 中不起作用。 问题已结束,愚蠢的错误!!!

最佳答案

for(t=l;t!=r;t++);

看到那里的分号了吗?去掉它。照原样,循环递增 t 直到达到 r 而不执行任何操作,然后指向的值是 t (现在 r) 被打印,后面是“-->”,然后是 r 指向的值。

关于指针之间的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10013216/

相关文章:

c - C 中时间结构所需的帮助

c++ - 错误 C3861 : 'execute_assert' : identifier not found

c - 如何在 C 上初始化和分配数组到指针

在C程序中将文件从一个文件夹复制到另一个文件夹

c - 如何正确初始化 const int const * 变量?

java - 具有来自 List<List<String>> 的频率计数的唯一值

java - 检查两个矩形是否重叠

c++ - 尝试实现

c - 无法使用指向该变量的指针更改其他函数中局部变量的状态

c - 这在 C 中究竟意味着什么?