c - 错误:控制可能到达非 void 函数 c 编程的结尾
问题描述
void *returnMin(PQueue q){
if (q.list == NULL){
printf("List is empty.\n");
} else if (q.list->head == NULL){
printf("List is empty.\n");
} else {
return q.list->head;
}
}
目前正在处理优先级队列,一切似乎都在工作,除了当我尝试返回最小和最大优先级时,我得到了错误。我们使用了 3 个结构,第 3 个是结构指针。
解决方案
您的函数返回一个指针。由于该函数返回一些东西,并且该东西很可能在您的代码中的其他地方使用,因此它必须在任何可能的情况下返回一个值。但是,您的函数不会这样做,因为只有最后一个分支有return
语句。如果您以某种方式输入if (q.list == NULL)
,则没有return
要执行的语句。
要解决此问题,请返回一些有意义的内容(NULL
表示错误是一个不错的选择):
void *returnMin(PQueue q){
if (q.list == NULL){
printf("List is empty.\n");
return NULL;
} else if (q.list->head == NULL){
printf("List is empty.\n");
return NULL;
} else {
return q.list->head;
}
}
推荐阅读
- php - TCPDF 在 writeHTML 中出现间距问题
- python - 简化单元测试中的多个相同测试
- c# - 使用 Visual Studio 2010 c# 和外部 SMTP 服务器发送电子邮件
- c++ - 每个服务的 RPC 限制
- javascript - 有人可以帮我处理这个 javascript 代码吗
- visual-studio - 有没有办法在项目发布时创建 TFS/VSTS 标签?
- python - 频率与时间图python
- matrix - 并行更改二维向量
- ruby-on-rails - 如何在 Rails 中使用 action mailer 预渲染一封信?
- sql - 计算速度SQL