【发布时间】:2020-01-15 18:40:15
【问题描述】:
Line 20| Col 15 [Error] invalid conversion from 'ElemArr* {aka int*}' to 'ElemArr {aka int}' [-fpermissive]
我收到此错误,但不知道为什么。我是一名学生,在学习这个时,我在尝试使用“圆形阵列”概念时遇到了这个特定问题。谢谢!我已经尝试将 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;
}
}
【问题讨论】:
-
Eneueue()的第二个参数是单个ElemArr,但您试图传递e,它是ElemArr的数组。 -
需要循环调用
Enqueue,将数组的每个元素加入队列中。 -
@WhozCraig 这行不通,他想要一个包含 5 个元素的数组。
-
是的,我明白了。为不在别名中隐藏简单类型提供更多燃料。
ElemArr只是一个实际的数组或指针。收回。 -
@Saberton Perchance,如果/当您删除不必要的类型别名
ElemArr并仅使用int时,您的代码会是什么样子?清楚那么问题是什么吗?