问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言中调用函数如何返回多个值?43

发布网友 发布时间:2023-10-16 22:31

我来回答

5个回答

热心网友 时间:2024-10-21 16:36

1、通过使用指针,在函数调用时,传递带有地址的参数,并使用指针更改其值;这样,修改后的值就会变成原始参数。

2、通过使用指针返回结果为:

3、通过使用结构:因为结构是用户定义的数据类型;可以定义一个包含两个整数变量的结构,并将更大和更小的值存储到这些变量中,然后使用该结构的值。

4、通过使用结构返回结果为:

5、通过使用数组,当一个数组作为参数传递时,基地址将传递给该函数,因此无论对数组副本所做的任何更改,都会更改为原始数组。

6、通过使用数组返回结果为:

热心网友 时间:2024-10-21 16:36

建立数组,返回指针。

在要返回的两个值类型相同时,可以用创建数组的方式,将要返回的值存在数组中,并返回数组首地址,这样就可以实现返回两个值的效果。需要注意的是,要返回数组首地址,那么返回的值不可以是局部变量,有如下几种是可以的:

a) 使用静态局部变量存储,并返回地址;

b) 使用全局变量存储,返回地址;

c) 函数中动态分配内存,并返回申请到的地址,此种方法需要注意,在使用后需要释放;

d) 在参数中传入数组地址,并返回。即返回的实际上是主调函数中的变量地址。

扩展资料

通常我们希望通过函数调用使主调函数能得到一个确定的值,这就是函数的返回值。函数的返回值是通过函数中的 return 语句获得的。return 语句将被调函数中的一个确定的值带回到主调函数中,供主调函数使用。

函数的返回值类型是在定义函数时指定的。return 语句中表达式的类型应与定义函数时指定的返回值类型一致。如果不一致,则以函数定义时的返回值类型为准,对 return 语句中表达式的类型自动进行转换,然后再将它返回给主调函数使用。

在调用函数时,如果需要从被调函数返回一个值供主调函数使用,那么返回值类型必须定义成非 void 型。此时被调函数中必须包含 return 语句,而且 return 后面必须要有返回值,否则就是语法错误。

如果函数有返回值,那么 return 语句后面的括号可以不要,比如“return(z);”等价于“return z;”。若不需要返回值则可以不要 return 语句。

需要强调的是,一个函数中可以有多个 return 语句,但并不是所有的 return 语句都起作用。执行到哪个 return 语句,就是哪个 return 语句起作用,该 return 语句后的其他语句就都不会执行了。

热心网友 时间:2024-10-21 16:37

在c语言中,返回多个值主要有两种方式
一种就像一楼所说的,返回一个数组。
但是这样做的坏处在于
调用程序者并不知道这个数组有多大,除非是某些只返回特定大小的函数,一般情况下不建议采用这种方法。
第二种是用指针返回,实例代码如下。
void exam(int *t)
{
*t = 1;
}
main()
{
int t = 0;
exam(&t);
pritf("%d",t);

}
如上代码,你会发现这个t变成1了。
这是因为你传的是指针(&是取址符),当然如果你还不知道什么是指针,那么就只能等你以后来实践这种方法了。如我上面这样的,是最简单的一个应用。当然你也可以定义下面这样的
exam(int d, int e, int *t, int *t1.....)
你可以把d,e当作普通参数,然后t和t1当参数返回。

当然你完全可以把这两种方法混合起来用
比如
int[] exam(int *size)
这里,返回一个int数组,而size则用于告诉调用者返回的数组的大小。
这样就不会出现数组越界的情况了。
当然如果是调用者误操作,那是无法避免的情况了

热心网友 时间:2024-10-21 16:37

主要可以通过指针或数组返回多个值,测试代码如下,

//程序功能,通过结构体实现多个数据返回及通过多个变量指针实现
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define PI 3.1415926
struct test
{
int x;
char str[20];
};
//返回结构体,实现多个数据返回
struct test* getTest()
{
struct test *t=NULL;
t=(struct test*)malloc(sizeof(struct test));
if(!t)
return NULL;
t->x=10;
memset(t->str,0,20);
memcpy(t->str,"testinfo",8);
return t;
}
//变相返回圆的面积、周长
void cir(double r,double *area,double *girth)
{
*area=PI*r*r;
*girth=PI*r*2;
}

int main(int argc, char *argv[])
{
double r=10.2;
double s=0,g=0;
struct test *t1=getTest();
if(!t1)
return 1;
cir(r,&s,&g);
printf("area=%f,girth=%f\n",s,g);
printf("%d,%s\n",t1->x,t1->str);
if(t1)
{
free(&t1);
t1=NULL;
}
return 0;
}

c语言函数名义上函数返回值只能有一个变量或者无返回值,但返回的变量可以是指针或结构体等更复杂的数据,通过指针或结构体从而变相实现多参数返回。可以作为实参间接返回或直接作为返回值返回,但需注意不要返回临时变量,如getTest()函数中不能定义struct test t变量直接返回。

热心网友 时间:2024-10-21 16:38

可以有很多方法实现
你可以不使用数组,使用vector来做

std::vector<int> convert(int a, int b)
{
std::vector<int> c;
c.push_back(a+b);
c.push_back(a-b);
c.push_back(a*b);
c.puch_back(0);
}

或者你可以在外面定义一个数组,作为传入参数

void convert(int a, int b, int *c)
{
c[0]=a+b;
c[1]=a-b;
c[2]=a*b;
c[3]=0;
}

main()
{
int a=b=3;
int c[4];
convert(a, b, c);
for(int nI = 0; nI < 4; nI++)
printf(“数组里面的第%d个值为: %d”,nI+1, c[nI]);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
这是什么钞票。 请问这是哪个国家的钞票?价值多少人民币?谢谢 快易典学生平板电脑屏幕碎了怎么办,我在书店买的,可以拿到书店修吗... 沧州龟头周围有一圈小肉粒是什么? 快易典学生电脑的屏幕摔坏了,触屏触不了,可以修吗?如果修的话要多少... 西班牙冷汤和哪些菜品搭配更好喝? 西班牙番茄冷汤提示 我想请问你在秦汉胡同学学古筝...一共需要多少钱啊,包括买古筝的钱 word2010如何查看和编辑文档? 胸罩带子老掉,罩杯边有空 显示异常多久恢复 显示异常多久恢复11 溜边走猜一个O一9数字 怎么在同一台手机上登录2个 福建天甘糖业贸易有限公司怎么样? 傻和傻得可爱有什么区别 长安欧力威后备箱遥控坏了怎么锁上 长安欧力威车门打不开!发动机外盖怎么打开啊?注要是想充电瓶电了!_百... 九甘糖白虎音乐的歌词是什么?1 怎么在一个手机上同时登录两个? ...检查更新时显示无法检查更新检查软件更新时出错,怎么回事? 欧力威后备箱门关不好 争100个回答 为什么这个星期央视5套不直播NBA?是将来一直不直播了吗,还是就这个星期... 长安欧力威后背箱锁不上咋回事? 华为情景智能怎么关闭317 情景智能怎么关闭,好烦2 华为手机怎样恢复情景智能在单独页面显示6 老是有个情景智能的提示,太烦了,怎么卸了或关掉1 我的一个女同学帮了我一个忙,帮我得到几百元的利润,我该怎样感谢她呢... c语言如何定义一个函数可以返回多个值回去给主函数呀。223 如何实现C语言被调用函数的多个参数返回,例如怎样用参数返回圆...1 部门经理要离职,公司两三个领导没选我,但我也想分一杯羹,想做... 部门里部门经理离职以后,我想当部门经理,但结果公司两三个领导... 国家强大对我有什么好处?4 国家给了我们什么幸福 国家能给我们什么7 四川省冶金局地质勘察院怎么样 劳力士表的发展史2 2013年江苏小高考冲A.历史每次检测80左右,地理80-90,生物85-90.这三课... 劳力士的起源?8 劳力士有多久的历史了?5 开车刮花了别人的车,但车里没人,直接开车走了,会不会被扣分?2 罗汉果是否可以泡几天23 罗汉果-个泡茶能喝几天8 停车刮到对方的车,走了,后来交警找到私了,对方要几千怎么办?...12 兄弟过生日送什么礼物好180 BOW的键盘如何进行输入法的切换?12 我想要 戴拿奥特曼片尾曲《只想守护着你》女生版MP3 悬赏1... 我是大自然中的一员作文,600字,要写猫的,速度,28