-2

我正在通过数组在 c 中实现出队。left 和 right 是指向 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() 中不起作用。问题关闭,愚蠢的错误!

4

2 回答 2

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

看到那里的分号了吗?去掉它。照原样,循环递增t,直到r不做任何事情到达,然后打印指向t(now r) 的值,然后是“-->”,然后是 指向的值r

于 2012-04-04T14:47:52.337 回答
0

已编辑** 您在此处设置一个地址点for(t=l;t<r;t++);尝试在 for 循环中取消引用 t 以用作您想要的 int 变量(您对 i 所做的操作)

于 2012-04-04T14:36:58.427 回答