我正在通过数组在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

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

10-12 00:18
查看更多