十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
在C语言中可以有多种方法实现主函数与函数间的多值传递的。
10年的东区网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整东区建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“东区网站设计”,“东区网站推广”以来,每个客户项目都认真落实执行。
最简单的,是利用实参-形参传递(当然这只能是从主函数传向函数,是单向的传递)。
如果要实现双向的传递,可以使用全局变量、指针、数组、结构体。
C语言都是先定义后使用的
通过函数名调用如:
double
sum(double
x,double
y)
{
double
z;
z=x+y;
retun(z);
}
main()
{
double
h;
double
a,b;
h=sum(a,b);
}
最简单的方式就是在你调用的函数后面加跳转语句 例如 goto a;然后你在你MAIN函数的定义变量的后面加上a:就行了虽然不推荐用这种方式 但这是最简单的。你也可以用其他的例如 while for do while 等循环语句写这个
float max(struct student stu)函数参数的类型为struct student
所以你在函数内部使用stu[0]这种用法 把它当成数组用一定会出错的
至于为什么加上
ma=max(stu);/*加上这个函数后就出错了,没它之前程序可以执行*/
才报错,是因为你没有调用那个函数 函数不会被编译
建议修改max函数 如下
float max(struct student *student)//这里函数参数不要和全局变量重名 会引起一些不必要的麻烦
{
int i;
float n;
n=average(student[0]);/*为什么这边说illegal for struct*/
for(i=0;i5;i++)
if(naverage(student[i])) n=average(student[i]);
return n;
}
试试 我没编译 如果再有问题的话继续 我帮你改
(1)
里传的是main里y的值,传过去的x在函数b里只是个局部对象,影响不到main里的实参y
(2)
的实质是传递了y数组的首地址,也就是y数组中唯一一个元素的地址,b函数里接受到x其实是main里y[0]的地址,所以x[0]
==
main里的y,传给scanf的变量地址也就是main里y的地址,所以y接受到了b函数中scanf的输入
2的实质是传递变量的地址,然后通过地址修改实参,1则是传递变量本身的值
c里面如果想通过形参修改实参,只能使用2的方法
void
b(struct
a
x[
])
等价于
void
b(
struct
a*
x
)
使用全局变量进行数据的传递是可以的。
优点是:很方便调用,因为谁都可以使用它,不用很麻烦的传递参数
缺点是:就是应为谁都可以使用它,大家都可以修改它,可能导致不可预测的错误,也不便于调试,当程序中变量个数较多时,一不小心很容易在无意中修改了全局变量的值,导致查找、纠错麻烦。所以不建议大量使用全局变量。