C-索引处的返回值:控件到达非void函数的末尾
首先:我最近刚开始用C(我的第一种编程语言)编程,这可能是一个愚蠢/简单的问题,但我试图实现一个函数,返回数组/列表中索引处的值。我总是从编译器那里得到这个错误:“错误:编译器到达非void函数的末尾”,即使我返回int类型的值。提前感谢:C-索引处的返回值:控件到达非void函数的末尾,c,compiler-errors,syntax-error,C,Compiler Errors,Syntax Error,首先:我最近刚开始用C(我的第一种编程语言)编程,这可能是一个愚蠢/简单的问题,但我试图实现一个函数,返回数组/列表中索引处的值。我总是从编译器那里得到这个错误:“错误:编译器到达非void函数的末尾”,即使我返回int类型的值。提前感谢: int list_get(int list[], int length, int index) { if(index <= CAPACITY){ for(int i = 0; i <= CAPACITY; i++){
int list_get(int list[], int length, int index) {
if(index <= CAPACITY){
for(int i = 0; i <= CAPACITY; i++){
if(i == index)
return list[i];
}
}
else{
printf("Index is out of range. \n");
return 0;
}
}
int-list\u-get(int-list[],int-length,int-index){
如果编译器看到(index,则return
语句都处于某种条件块下,因此它会尝试向您发出警告
以流程为例
index对于初学者,该函数没有意义。函数中未使用参数length
。此外,不需要包含一个循环来检查索引是否小于或等于魔法值容量
编译器发出一条消息,因为它无法确定此条件是否存在
if(i == index)
if(index <= CAPACITY){
如果满足此条件,则始终为真
if(i == index)
if(index <= CAPACITY){
if(index您的else语句超出for循环。因此,当for循环退出时,它会执行else语句,并且在那里您已写入“return 0”。因此它不会返回任何值。需要返回0;
在for-loop之后。或者不使用类似于if(0列出[i]
的前一次我的注释键入列出[index]