当前位置: 代码迷 >> C语言 >> [求助]新手求助函数怎么样可以返回2个值呢?
  详细解决方案

[求助]新手求助函数怎么样可以返回2个值呢?

热度:105   发布时间:2006-07-17 22:00:23.0
[CODE]#include<stdio.h>
struct array{
int ia[2];
}i,j;
struct array rt(int a,int b)
{
i.ia[0]=a+b;
i.ia[1]=a-b;
return i;
}
main()
{
int a=5,b=3;
j=rt(a,b);
printf("%d,%d\n",j.ia[0],j.ia[1]);
}[/CODE]

想必楼上也不能把这种情况称为返回数组吧
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-17 14:03:22
SunShining

等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
  得分:0 
以下是引用穆扬在2006-7-17 22:03:22的发言:
是的
我不把那叫做返回数组

feng1256说的果然没错
----------------解决方案--------------------------------------------------------

提示: 作者被禁止或删除 内容自动屏蔽

2006-07-17 14:04:32
★红狼

等 级:论坛游民
帖 子:190
专家分:17
注 册:2006-7-12
  得分:0 
以下是引用SunShining在2006-7-17 22:00:23的发言:
[CODE]#include<stdio.h>
struct array{
int ia[2];
}i,j;
struct array rt(int a,int b) // 函数还是返回了1个值 i。因为是结构吧。所以有2个值i.ia[0];i[1];
{
i.ia[0]=a+b;
i.ia[1]=a-b;
return i;
}
main()
{
int a=5,b=3;
j=rt(a,b);
printf("%d,%d\n",j.ia[0],j.ia[1]); //接上。这里只是引用了结构中的 j
}[/CODE]

我认为 穆扬说的。结构 也 会返回 多个值 的意思。就在这里吧。


----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-18 03:57:13
wangsong

等 级:新手上路
帖 子:45
专家分:0
注 册:2006-7-15
  得分:0 
首先C语言中没有引用的概念,其次这么做也没法返回两个值,
可以定义一个结构例如:
typedef sturct data
{
int a;
int b;
}Data;

函数首部:Data fun();
函数的返回值是个结构,间接达到了“返回两个值”的目的
----------------解决方案--------------------------------------------------------
关于 type (*p)[n] 的编译限制 的更正

我原以为:在TC系列

不能如下:
#include <stdio.h>
main()
{
char a[2][3]={'a','s','d','f','g','h'};

char (*p)[4]=&a[0][1];
printf("%c\n",p[0][3]);
getchar();
}

****************************
只能如下:
#include <stdio.h>
main()
{
char a[2][3]={'a','s','d','f','g','h'};

char (*p)[3]=a; /* 这里的数字一定要跟上面的最后的数字一致。
printf("%c\n",p[0][3]);
getchar();
}


现在发现: 如果把后缀写成C,前者照样可以(虽然有警告),改成CPP才不行。

还有另外一种方式:
在COMPILER的C++OPTION中,选C++ ALWAYS,即使是C后缀,也不行,原则一样。

在VC中,也基本一样。

总之,前者是C规范,后者是C++规范
在C++,有一些很死的规定,C就自由多了
----------------解决方案--------------------------------------------------------

要函数返回一个值以上的都需要用到指针啦~~~


----------------解决方案--------------------------------------------------------
  相关解决方案