错误:被调用对象不是函数或函数指针

时间:2016-08-17 23:29:40

标签: c pointers

我尝试将多个值插入队列并删除队列中的第一个值。 但是,我想在删除值后打印队列时出错。

有我的代码:

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) );
                   ^

请帮我解决,谢谢。

1 个答案:

答案 0 :(得分:1)

  • 从[{1}}转换int*(从char*转换)很糟糕。将char queue[100]用于int的元素。
  • 正如错误消息所示,queue无效,因为*p(v+1)是指向不是函数的指针而是p,因此函数调用操作符int不能用于它。要访问()的{​​{1}}元素,您可以使用v