重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
//兄弟首先啊,你传的参数里面 有个 数组长度 那么这个 长度是不是可以认为是你的数字个数呢。
创新互联公司服务项目包括庐阳网站建设、庐阳网站制作、庐阳网页制作以及庐阳网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,庐阳网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到庐阳省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
//其次啊 通过形参 返回, 例如你传一个数组 a[10] 那么形参只是复制的 a的地址 传进来, 所以返回不可能通过形参返回, 只能通过形参指向的地址 改变地址内的值。然后你可以在函数外面调用这个值. 严格意义上讲 就没有通过形参返回这一说,因为形参在函数调用完以后就会被释放,他是处于栈中的,只能通过形参所指向的地址返回,除非c++的参数引用,可以通过参数返回。
//如下例:
void func(double *arr, int num)//第一个参数是 数组 第二个参数是数组元素个数
{
for (int i = 1; i num; i++)
{
arr[0] += arr[i];//所有的数相加的结果放在了arr[0]
}
arr[1] = num;//这个是数组内数字个数 强制int转double
}
int _tmain(int argc, _TCHAR*argv[])//我用的c++main 你可以用c main
{
double a[10] = { 0.254, 0.77, 1.65, 5.95, 47.5, 54.22, 0.356, 1.25, 12.3, 12.8 };//10个元素
func(a, 10);
printf("总和是:%lf,数字个数为:%lf", a[0],a[1]);
getchar();
}
你好!
1,C语言中,所谓传参一般调用一个函数时,传递过来的参数,否则被调用函数是无法使用调用函数里面的参数的,除了全局参数等。
2,C语言中的返回值一般一return 的形式出现,就是这个函数结束时,会抛出需要返回的一个值。在调用的函数中可以接收。下面我举一个完整的例子来说明这几者的关系。
3.实例说明:
#include stdio.h
int counter(int i);
void main(void)
{
int j,m;
m = 5;
j = counter(m); //此处调用函数counter();并且传入参数,一个int型的m,
//次函数在结束时将返回一个int型,这里用j来接收
printf("返回值为:%d\n",j);
}
int counter(int i) //这里是函数定义,int counter();说明此函数将会返回一个
{ //int型
//counter(int i);表示在调用此函数时需要传入一个int型参数
return i + 1; //此处是函数将要返回的值,传进来的是5,那返回 5 + 1,返回6
}
不懂可继续追问!
1、
第一个和第二个都是值传递,不改变原值。
第三个是地址传递,改变地址里的值,实际的值就改变了。
2、
返回值在函数结束,也就消失了,和局部变量一样。
函数的返回值通过return语句来执行,即return后的变量或表达式的值,就为该函数的返回值(你可以根据需要自定义返回什么值),而返回值的类型是指该值你想要得到的类型,比如return
a;(a的类型,你在函数体里定义的是int
a;但根据需要,你要的是一个float型的返回值),于是,这样定义一个函数:
float
函数名(参数列表)
{
int
a;
函数体;
……
return
a;
}
这样,返回值a就变成了float型。
①为什么需要return?
为了回答这个问题,
我打算用 模块思维 来解释。
②定义模块(形参模块)
定义函数:f(s)(a,b)
满足公式:s=a+b
函数名:f(s)
形参: a,b(公式中的 变量 )
函数返回值:return s
③调用模块(实参模块)
主函数:main()表示用户自己编写的部分
调用函数:f(s)(1,2)
满足公式:x=f(s)(1,2)
函数名:f(s)和定义函数一致,产生调用
实参 :1,2( 赋值 给公式的值)
求值:printf("%d\n",x),求x的值?
④值的传递过程
调用模块 中调用函数x=f(s)(1,2)
将实参1和2的值赋值给
定义模块 中的形参a和b
(实参到形参是单向传递,不可逆)
定义模块计算出s=a+b=1+2=3
定义模块 中的return s
将s的值赋值给
调用模块 中的函数f(s)(1,2)
即x=f(s)(1,2)=s=3
~
return s的作用
就是将定义模块中的s
赋值 给调用模块中的调用函数
如果没有return s
调用模块中的调用函数将永远没有定值
即所求x 无定值
这一点和数学不一样,
数学中
同一函数名的值是 通用 的,
C语言中
定义函数和调用函数的值是 隔离 的,
尽管函数名一样
如果不赋值,调用函数永远无定值。
c=max(a,b);
//这句是
当max
函数结束的时候
把这个函数里
return
回的值
赋值给c
也就是z
当调用函数所填写的参数叫实参
就是实实在在的值
函数里面的参数
就是max(int
x,
int
y)
这种用来接收实参的叫形参