对于我制作队列程序的结构化方法,在涉及指针时,语法和数组索引存在一些问题。我已经标出了我遇到麻烦的路线。这些都是不是正确转换的问题,还是语法不正确的问题?
Wrong
答案 0 :(得分:0)
您必须记住,用array[index]
索引数组等同于操作*(array + index)
。因此,让我们来了解一下您当前正在做什么以及为什么它不正确。
您有一个变量int **queue
,它是一个指向int的指针。然后您想要提取前面并将其放在变量int *front
中。您当前的方法是:
int *front = (*queue)[0];
并使用等价的高位进行翻译:
int *front = *((*queue) + 0)
第一个(*queue)
解引用queue
并产生一个int *
。然后,将0
添加到int *
中,得到相同的内容,然后取消引用。取消引用int *
的收益是什么?
提示:您不应直接通过int *foo
将int bar
分配给foo = bar
。
继续讨论其他问题,数组下标必须为整数。查看int * rear
的类型应该可以清楚地说明为什么array[rear]
会发出警告。
如果应该int *rear
指向到队列的后面,为什么不只使用它作为指针而不是尝试使用它为队列建立索引?:)