|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ C语言初学不懂返回值和一些其他的定义,求解
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
2253
人关注过本帖
标题:
C语言初学不懂返回值和一些其他的定义,求解
只看楼主
加入收藏
苏啊婷
等 级:
新手上路
帖 子:10
专家分:8
注 册:2015-12-9
结帖率:
100%
楼主
收藏
已结贴
√
问题点数:20 回复次数:18
C语言初学不懂返回值和一些其他的定义,求解
#include<stdio.h>
int f
(int x,int y)
这一部分是要运用到主函数的东西吗?还是应该是主函数里定义的数字?
{
float x1,x2;
x1=(-b+sqrt(b*b-4*a*c))/2*a;
x2=(-b-sqrt(b*b-4*a*c))/2*a;
return x1,x2;
}
我要将x1,x2运用到主函数里这样子是不是错误的?
搜索更多相关主题的帖子:
C语言
return
2015-12-09 22:30
举报帖子
使用道具
赠送鲜花
ms268el8
等 级:
业余侠客
威 望:
1
帖 子:84
专家分:299
注 册:2015-11-30
第
2
楼
收藏
得分:4
int f(int x,int y) x和y是呼叫方在呼叫這個函式時傳入的引數,呼叫方可以是主函式,也可以是其他函式, 甚至是函式自己本身也可以。
return 應該不能回傳兩個變數,同時回傳x1,x2是不可行。如果函式需要回傳兩個以上的變數,可以用傳指標呼叫。利用指標間接使呼叫方與被呼叫方的變數共用記憶體。以達到回傳多個變數的效果
2015-12-09 22:49
举报帖子
使用道具
赠送鲜花
苏啊婷
等 级:
新手上路
帖 子:10
专家分:8
注 册:2015-12-9
第
3
楼
收藏
得分:0
回复 2楼 ms268el8
所以如果我要计算x1,x2
f()在括号里应该来自原函数的 int a,int b,int c是吗?
return到底是什么用呢?我需要用到这个调用函数计算出 x1,x2返回值应该设置成x1,x2吗?或者说,只要在调用函数中计算出x1,x2
在主函数中调用就可以了?
2015-12-09 22:58
举报帖子
使用道具
赠送鲜花
ms268el8
等 级:
业余侠客
威 望:
1
帖 子:84
专家分:299
注 册:2015-11-30
第
4
楼
收藏
得分:0
而且int f(int x,int y)
中f前面的int是指該函式回傳值的資料型態。這裡代表要回傳資料型態為int的值。但是x1和x2都被宣告為float資料型態。所以要回傳的變數x1,x2和函式指明要回傳的資料型態不符。應該改為float f(int x, int y)更為恰當。不過也是那一句,想回傳兩個變數以上,應該使用傳指標呼叫的方法。但傳指標呼叫的方法不需要回傳值,因為它是透過指標間接共用記憶體。所以可以這樣寫void f(float *x1, float *x2, int x, int y)
2015-12-09 23:03
举报帖子
使用道具
赠送鲜花
苏啊婷
等 级:
新手上路
帖 子:10
专家分:8
注 册:2015-12-9
第
5
楼
收藏
得分:0
回复 4楼 ms268el8
噢,好的谢谢。那,返回值指向的值是函数输出的结果吗?在f()里定义的值是要输出的值吗?还是主函数里定义的值?
2015-12-09 23:18
举报帖子
使用道具
赠送鲜花
newdos
等 级:
禁止访问
威 望:
6
帖 子:251
专家分:1169
注 册:2012-8-13
第
6
楼
收藏
得分:4
另一个办法是可以通过结构体来返回你想要的二个根。
#include <stdio.h>
#include <math.h>
struct Result
{
double x1;
double x2;
};
struct Result foo(int a, int b, int c);
int main()
{
struct Result r={0,0};
r = foo(1,6,2);
printf("x1=%lf, x2=%lf\n", r.x1, r.x2);
return 0;
}
struct Result foo(int a, int b, int c)
{
struct Result ret;
ret.x1 = (-b+sqrt(b*b-4*a*c))/2*a;
ret.x2 = (-b-sqrt(b*b-4*a*c))/2*a;
return ret;
}
[此贴子已经被作者于2015-12-9 23:54编辑过]
2015-12-09 23:37
举报帖子
使用道具
赠送鲜花
ms268el8
等 级:
业余侠客
威 望:
1
帖 子:84
专家分:299
注 册:2015-11-30
第
7
楼
收藏
得分:0
回复 3楼 苏啊婷
變數是有生命週期的,所有在f函式宣告的變數都會在f函式結束的時候被釋放,即變數的生命週期結束了,除非將它宣告為static變數等級。在此不多作說明。所以當返回到呼叫方時,f函式中的x1, x2變數的生命週期已經結束。想在呼叫方使用f函式中宣告的變數就需要回傳return x1或x2。而且函式與函式之間宣告的變數是不共用的。例如在a函式的中宣告的x變數,與b函式中宣告的x變數其實是兩個變數,不是同一個變數,即使變數名稱相同。
2015-12-10 00:01
举报帖子
使用道具
赠送鲜花
ms268el8
等 级:
业余侠客
威 望:
1
帖 子:84
专家分:299
注 册:2015-11-30
第
8
楼
收藏
得分:0
既然return會回傳一個值給呼叫方,自然呼叫方就需要一個變數來接收這個回傳值,當然用於接收回傳值的變數的資料型態也要和回傳的值相容。例如會回傳float型態的值回來,接收這個值的變數應該也宣告為float
2015-12-10 00:17
举报帖子
使用道具
赠送鲜花
未来大仙
来 自:黑窟窿
等 级:
侠之大者
威 望:
4
帖 子:263
专家分:491
注 册:2015-6-20
第
9
楼
收藏
得分:4
int f()
是自己定义的一个函数,就像中学中的 给定运算符号给你 按照题目的要求求解, 同理,这里也是一样,定义f()函数,就要按照里面的运算语句来执行,return 就相当于中学中的 f(x)=
最后的结果,就是 给 x的值,计算出 相应的y一样
好好学习,天天向上!
2015-12-10 10:10
举报帖子
使用道具
赠送鲜花
苏啊婷
等 级:
新手上路
帖 子:10
专家分:8
注 册:2015-12-9
第
10
楼
收藏
得分:0
回复 4楼 ms268el8
用void f()就可以不设返回值了吗?为什么?不好意思,我这些东西不太懂
2015-12-10 16:03
举报帖子
使用道具
赠送鲜花
19
1/2页
1
2
快速回复:
C语言初学不懂返回值和一些其他的定义,求解
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.024237 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved