c - 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;
}
解决方案
在 C 中,每个函数必须只返回一个值。(它可以是void
如果它不需要返回任何东西。)
如果你想从一个函数中获得多个结果,有两种方法可以实现。
选项一:在您的函数中,分配某种结构来保存多个值(通常但不一定是数组),并使函数的一个返回值成为指向该结构的指针。函数的调用者通常会负责在完成该结构时清理它,free
例如使用。
选项二:让您的函数获取指向多个值的某种容器的指针(通常但不一定是数组),并通过将结果添加到容器中来“返回”结果。
在任何一种情况下,调用者(在这种情况下)仍然有责任对main
每个值做一些有意义的事情,例如通过使用for
循环将它们全部打印出来。
推荐阅读
- java - 具有私有静态字段的超类和子类调用改变字段的方法,为什么字段不改变?
- c# - EF6 必需-可选关系(一对零或一)无法正常工作
- materialize - 在 Picker 实现上显示数据库中的日期
- dart - 颤振:坏状态:流已经被收听
- tensorflow - 在张量流中仅恢复部分预训练模型后如何冻结某些层?
- javascript - HTML:如果元素不可见,则忽略添加 OnClick 事件
- javascript - React Native - Flatlist 单选
- django - 无法在 win 10 中安装 Django
- python - 数据库 API Python/django
- wxpython - 是否有到 wxpython 的 intersphinx 映射?