指针之间的比较

时间:2012-04-04 14:28:20

标签: c pointers data-structures deque

我通过数组在c中实现了一个dequeue。左和右是指向出列的最左边和最右边元素的指针。 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()中运行。 问题关闭,愚蠢的错误!!!

2 个答案:

答案 0 :(得分:4)

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

看到那里的分号?去掉它。按原样,循环递增t直到达到r而不做任何事情,然后打印指向t(现在为r)的值,然后“ - &gt;“,然后是r指向的值。

答案 1 :(得分:0)

编辑**你设置一个点在这里解决一个问题for(t=l;t<r;t++);尝试在for循环中取消t用作你想要的int varible(你用i做了什么)