gpt4 book ai didi

c - C 中的 "Pointer Expected"和 "Conflicting argument type"错误

转载 作者:太空宇宙 更新时间:2023-11-04 00:30:46 26 4
gpt4 key购买 nike

因此,我编写了一个用于插入队列的函数,即 en_queue。函数体是:

void en_queue(queue,max,front,rear) 
{
int ch1;
printf("\n Enter element to add->");
scanf("%d",&ch1);
if(front==0 && rear==(max-1))
{
printf("\n Caution!! Queue Overflow!!");
}
else if(rear==(max-1) && front>0)
{
rear=0;
*queue[rear]=ch1;
}
else if(front==-1 && rear==-1)
{
front=rear=0;
*queue[rear]=0;
}
else
{
rear++;
*queue[rear]=ch1;
}
}

原型(prototype)声明是:

void en_queue(int *,int, int, int);

在通话过程中,我这样调用它:

en_queue(queue,MAX,front,rear);

其中 queue[MAX] 是一个数组(#define MAX 10),MAX 是数组可以包含的元素数, frontrear 都是整数,当前值为 -1。我不断收到 type error: pointer expectedConflicting argument declarations for function 'en_queue' 的错误。

我不明白为什么参数不匹配。因为我传递了数组的地址并将其接收到指针变量中并使用了指针。那怎么会出错呢?

最佳答案

首先:

void en_queue(queue,max,front,rear) 
{

应该是:

void en_queue(int *queue, int max, int front, int rear) 
{

其次,像 *queue[rear] = 0; 这样的表达式应该只是 queue[rear] = 0; 因为 queue整数*

注意:表达式a[i] == *(a + i),所以如果a是指针那么在表达式a[i] 你不需要显式地引用 *

在您的表达式 *queue[rear] 中,您收到错误 type error: pointer expected 因为您解引用了两次,例如*queue[rear] == * *(queue + rear) 因为 *(queue + rear) 是不是指针而是一个 int,因此编译器消息需要一个指针。

编译器消息:“函数 en_queue() 的参数声明冲突”,因为第一个参数是 int*。与在函数定义中一样,您没有指定参数类型默认被认为是 int 类型。

关于c - C 中的 "Pointer Expected"和 "Conflicting argument type"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18778436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com