我尝试将多个值插入队列并删除队列中的第一个值。 但是,我想在删除值后打印队列时出错。
有我的代码:
char queue[100];
int i=-1;
int *delete_queue(int value){
int j;
for(j= 0; j< 10; j++){
queue[j]= queue[j+1];
}
return queue;
}
void insert_queue(int value){
i= i + 1;
queue[i] = value;
}
void print_queue(int *p){
int v;
for(v =0; v < 5; v++){
printf(">> %d \n", *p(v+1) );
}
}
int main(int argc, char const *argv[])
{
//int v ;
int *new_queue;
insert_queue(33);
insert_queue(22);
insert_queue(11);
new_queue= delete_queue(33);
print_queue(new_queue);
// for(v =0; v < 5; v++){
// printf(">> %d \n", *new_queue(v+1) );
// }
return 0;
}
错误是:
delete_queue_test.c: In function ‘print_queue’:
delete_queue_test.c:33:23: error: called object ‘p’ is not a function or
function pointer
printf(">> %d \n", *p(v+1) );
^
请帮我解决,谢谢。
答案 0 :(得分:1)
int*
(从char*
转换)很糟糕。将char queue[100]
用于int
的元素。queue
无效,因为*p(v+1)
是指向不是函数的指针而是p
,因此函数调用操作符int
不能用于它。要访问()
的{{1}}元素,您可以使用v
。