【发布时间】:2013-02-03 16:07:19
【问题描述】:
我对 c 和指针很陌生。每次我认为 k 我已经理解了它,就会出现一个我不太理解的问题(我花了一些时间阅读 c 文档,但指针对我来说仍然不清楚):
typedef struct {
int q[QUEUESIZE+1];
int first;
int last;
int count;
} queue;
enqueue(queue *q, int x)
{
if (q->count >= QUEUESIZE)
printf("Warning: queue overflow enqueue x=%d\n",x);
else {
q->last = (q->last+1) % QUEUESIZE;
q->q[ q->last ] = x;
q->count = q->count + 1;
}
}
我希望我的问题不会太不透明,但有人可以解释在入队函数中使用指针吗?我以为排队的原理是分配一些精确的连续内存地址,但不是这样确定的......
【问题讨论】:
-
有什么问题?你有错误吗?什么不工作?请准确,这样可以节省我们猜测的时间:)
-
@m0skit0:让我为你强调一下:有人能解释一下
enqueue函数中指针的使用吗? -
@AlokSave 解释什么?指针如何工作?我不明白他到底想知道什么……
-
@m0skit0 代码确实可以工作(用于遍历图形),但我不明白将指针作为变量而不是简单变量传递的好处是什么(enqueue(queue q , int x)) ?
-
1) 你不需要
last元素,只需要first+count。 2) 对大小、计数和索引使用无符号类型是可取的(您不想要负索引或大小)