【发布时间】:2021-07-12 22:19:58
【问题描述】:
struct Stack {
char top;
unsigned capacity;
char* array;
};
char*pop(struct Stack* stack)
{
if (isEmpty(stack)){
printf("Stack underflow\n");
}
return stack->array[stack->top--];
}
char* peek(struct Stack* stack)
{
if (isEmpty(stack)){
printf("Stack underflow\n");
}else{
return stack->array[stack->top];
}}
***main.c:56:29: warning: return makes pointer from integer without a cast [-Wint-conversion]
main.c:67:24: warning: return makes pointer from integer without a cast [-Wint-conversion]
我有这两个警告,我无法处理,我需要帮助,请
警告在这两行:
return stack->array[stack->top--]......
return stack->array[stack->top]
【问题讨论】:
-
返回类型或成员
array的类型错误。在没有上下文的情况下,尚不清楚哪个是预期的。 -
如果
array的类型正确,函数应该返回char,因为array指向的数组元素是char。如果返回类型正确,则成员array应为char**。 -
旁注:
peek()不会从if分支返回任何内容。 -
我将数组类型更改为 char** 并且两个警告消失了.. 但是另一个名为 push 的函数中的另一个警告出现了.. 这是函数和警告:void push(struct Stack* stack, char* item) { if (isFull(stack)) printf("堆栈溢出\n"); else { 堆栈->数组[++stack->top] = *item; } 赋值使指针从整数不进行强制转换
标签: arrays c pointers data-structures stack