【发布时间】:2012-04-18 06:50:09
【问题描述】:
我正在通过数组在 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() 中不起作用。 问题结束,愚蠢的错误!!!
【问题讨论】:
-
@NiklasB.:给定左右指针,听起来他在做一个循环缓冲区。
-
@Jerry:是的,我想这是有道理的。
-
我没有看到
left或right,只有l和r。如果您显示整个功能会有所帮助。 -
预期输出和错误输出是什么?
l和r的实际值是多少? -
@ksb 如果
left和right对问题很重要,您应该在代码中显示它们。如果没有,请不要考虑它们。显示整个show()函数。如果输出错误,请告诉我们它与预期结果有何不同或向我们展示一个示例。
标签: c pointers data-structures deque