微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

警告:返回使指针来自整数而不进行强制转换

如何解决警告:返回使指针来自整数而不进行强制转换

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]

解决方法

这个消息非常清楚。您正在尝试返回一个整数而不是一个指针。

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

的元素

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

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

,

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

另外,附带说明一下,您的 peek() 不会从 if 分支返回任何内容。更改它以返回某些内容(根据您的程序逻辑是一个虚拟字符),或者只是使其成为一个独立的 if 语句,就像 pop() 中的语句一样。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。