C - 从 int* 到 int 的无效转换
C - invalid conversion from int* to int
Line 20| Col 15 [Error] invalid conversion from 'ElemArr* {aka int*}' to 'ElemArr {aka int}' [-fpermissive]
我遇到了这个错误,我不确定为什么。我是一名学生,在研究这个问题时,我在尝试使用 'circular array' 概念时遇到了这个具体问题。谢谢!我已经尝试将 ElemArr e[MAX] 更改为 int elem[MAX] 并在那里进行检查,但它仍然不起作用!
#include<stdio.h>
#include<stdlib.h>
#define MAX 5
typedef int ElemArr;
typedef struct{
ElemArr E[MAX];
int top;
int back;
}Queue;
void initQueue(Queue *Q);
void Enqueue(Queue *Q, ElemArr E);
int main(){
Queue q;
ElemArr e[MAX] = {4, 21, 65, 12, 17};
initQueue(&q);
Enqueue(&q, e);
return 0;
}
void initQueue(Queue *Q){
Q->top = 1;
Q->back = 0;
printf("Queue is initialized");
}
void Enqueue(Queue *Q, ElemArr E){
if((Q->back+2) % MAX != Q->top){
Q->back = (Q->back+1) % MAX;
Q->E[Q->back] = E;
printf("Enqueue done");
}
}
void Dequque(Queue *Q){
if((Q->back+1) % MAX != Q->top){
Q->top = (Q->top+1) % MAX;
}
}
在 Enqueue(&q, e);
中,e
是 int*
类型,但您将其作为 int
变量传递给 void Enqueue(Queue *Q, ElemArr E);
函数。
您应该将 int
类型的变量传递给 Enqueue
函数的第二个参数。
Enqueue
函数只接受一个 ElemArr
值,但您要传递整个数组。您需要为每个元素单独调用它。变化
Enqueue(&q, e);
到
for (int i = 0; i < MAX; i++) {
Enqueue(&q, e[i]);
}
Line 20| Col 15 [Error] invalid conversion from 'ElemArr* {aka int*}' to 'ElemArr {aka int}' [-fpermissive]
我遇到了这个错误,我不确定为什么。我是一名学生,在研究这个问题时,我在尝试使用 'circular array' 概念时遇到了这个具体问题。谢谢!我已经尝试将 ElemArr e[MAX] 更改为 int elem[MAX] 并在那里进行检查,但它仍然不起作用!
#include<stdio.h>
#include<stdlib.h>
#define MAX 5
typedef int ElemArr;
typedef struct{
ElemArr E[MAX];
int top;
int back;
}Queue;
void initQueue(Queue *Q);
void Enqueue(Queue *Q, ElemArr E);
int main(){
Queue q;
ElemArr e[MAX] = {4, 21, 65, 12, 17};
initQueue(&q);
Enqueue(&q, e);
return 0;
}
void initQueue(Queue *Q){
Q->top = 1;
Q->back = 0;
printf("Queue is initialized");
}
void Enqueue(Queue *Q, ElemArr E){
if((Q->back+2) % MAX != Q->top){
Q->back = (Q->back+1) % MAX;
Q->E[Q->back] = E;
printf("Enqueue done");
}
}
void Dequque(Queue *Q){
if((Q->back+1) % MAX != Q->top){
Q->top = (Q->top+1) % MAX;
}
}
在 Enqueue(&q, e);
中,e
是 int*
类型,但您将其作为 int
变量传递给 void Enqueue(Queue *Q, ElemArr E);
函数。
您应该将 int
类型的变量传递给 Enqueue
函数的第二个参数。
Enqueue
函数只接受一个 ElemArr
值,但您要传递整个数组。您需要为每个元素单独调用它。变化
Enqueue(&q, e);
到
for (int i = 0; i < MAX; i++) {
Enqueue(&q, e[i]);
}