如何解决警告:返回使指针来自整数而不进行强制转换
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 举报,一经查实,本站将立刻删除。