首页 > 解决方案 > C 编程...为什么“return”语句在这段代码中只给出一个值?

问题描述

我是 C 编码的新手。我正在尝试编写一个程序,该程序在数组的第一个位置添加一个值。如下所示,append函数必须返回多个值。

当我printf("%d ", array[c])在这个函数中使用语句时,没有问题,我得到了我想要的值。

但是,当我return s;在这个函数中使用语句时,它只给出一个值,尽管它必须给出与printf("%d ", array[c])语句相同的值。

当我使用 运行此代码时printf("%d ", array[c]),输​​出为:

25、5、8、555、99

当我使用 运行此代码时return s,输​​出为;

25

为什么两个语句之间存在差异?我不需要在屏幕上打印值。我需要使用return声明。请帮帮我……</p>

#include <stdio.h>

int append(int array[]){

          int  position, c, s, len=4, value=25; 

          position=1;

          for (c = len - 1; c >= position-1; c--){
              array[c+1] = array[c];
              }
          array[position-1] = value;
          for (c = 0; c <= len; c++){

                //return array[c]; // <-- why this give only one value???   
                printf("%d ", array[c]);    //<--  this print the all value !!! 
              }          
}

int main(){

    int kar[]= {5, 8, 555, 99};

    printf("%d", append(kar));

    return 0;
}

标签: creturn

解决方案


在 C 中,每个函数必须只返回一个值。(它可以是void如果它不需要返回任何东西。)

如果你想从一个函数中获得多个结果,有两种方法可以实现。

选项一:在您的函数中,分配某种结构来保存多个值(通常但不一定是数组),并使函数的一个返回值成为指向该结构的指针。函数的调用者通常会负责在完成该结构时清理它,free例如使用。

选项二:让您的函数获取指向多个值的某种容器的指针(通常但不一定是数组),并通过将结果添加到容器中来“返回”结果。

在任何一种情况下,调用者(在这种情况下)仍然有责任对main每个值做一些有意义的事情,例如通过使用for循环将它们全部打印出来。


推荐阅读