警告:return 从整数生成指针而不进行强制转换

warning : return makes pointer from integer without a cast

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]

消息很清楚。您正在尝试 return 整数而不是指针。

stack->array[stack->top--]; 是数组 stack->array 中位置 stack->top--

的元素

所以将 return stack->array[stack->top--]; 改为 return stack->array;

或将 return 类型更改为 char 而不是 char*,具体取决于您想要实现的目标。

将两个函数 return 类型更改为 char 而不是 char* 因为 stack->array[stack->top] 将 return 一个字符而不是 char*

另外,附带说明一下,您的 peek() 没有 return 来自 if 分支的任何内容。将其更改为 return 某些东西(根据您的程序逻辑,一个虚拟字符)或将其设为独立的 if 语句,如 pop().

中的语句