关于C语言的函数调用(初级问题)

来源:百度知道 编辑:UC知道 时间:2024/05/24 02:54:20
例子:
#include"stdio.h"
#define pi 3.1415926
double d(z);
main()
{
double x,y1,y2,y3;
printf("please input one numberof the r:");
scanf("%lf",&x);
y1=2*pi*(x);
y2=pi*(x)*(x);
y3=4/3*(x)*(x)*(x);
printf("圆的周长为:%lf\n圆的面积为:%lf\n圆的体积为:%lf\n",y1,y2,y3);
}
double d(z)
{
double a,b,c;
a=2*pi*(z);
b=pi*(z)*(z);
c=4/3*(z)*(z)*(z);
return a,b,c;
}

这是一个我们的作业程序,虽然写出来了。可是总有些不明白的。请各位指点迷津。我在这里定义的是double d(z) 最后是它的内容。可是我在main里调用的不是函数名而是它的函数体。我想如果这样调用函数还有什么意义呢? 有什么语句可以直接调用函数名吗? 谢谢·~!
还有一个 return 0 是什么意义?

可以返回数组指针,这样:

#include"stdio.h"
#define pi 3.1415926
double *d(double);
main()
{
double x,*y1;
printf("please input one numberof the r:");
scanf("%lf",&x);
y1=d(x);
printf("圆的周长为:%lf\n圆的面积为:%lf\n圆的体积为:%lf\n",y1[0],y1[1],y1[2]);
return 0;
}

double *d(double z)
{
double a[3];
a[0]=2*pi*(z);
a[1]=pi*(z)*(z);
a[2]=4/3.0*(z)*(z)*(z); //4/3结果是1,因为都是整数。
return a;
}

LZ很独特的调用方式, 受教了_

_让我想起了DOS汇编中的段前缀

在这个程序中,并没有调用函数d(),主函数中出现的d()函数中的语句与d()函数无关。

这个程序中的d()函数也是有错误的,C语言中一个函数不可以同时返回多个值,只能有一个返回值。如果有多于一个的值需要返回,就要用指针参数带回。

你想只调用函数名?那没参数的话你要用那函数算什么??

一个函数只能返回一个返回值,double d(z)写的不对。
你可以把周长,面积,体积写成三个函数,
周长 double a(double z){return 2*pi*(z);}
面积 double b(doulbe z){return pi*(z)*(z);}
体积 double c(doulbe z){return 4/3*(z)*(z)*(z);}
调用时写为:y1=a(x);
y2=b(x);