首页 > 解决方案 > 错误:控制可能到达非 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 个是结构指针。

标签: c

解决方案


您的函数返回一个指针。由于该函数返回一些东西,并且该东西很可能在您的代码中的其他地方使用,因此它必须在任何可能的情况下返回一个值。但是,您的函数不会这样做,因为只有最后一个分支有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;
  }
}

推荐阅读