第二段代码没有给出正确的值,因为它只传递了 r
据我所知。然而,我想让这段代码在不使用 return
(只是为了学习如何以这种其他方式进行)。另外,在这两种方案之间,什么才算是最佳实践?谢谢您 :-)
#include <stdio.h>
#define PI 3.1416
float area(float r);
int main(void)
{
float r = 10;
printf("Area: %.2f", area(r));
return 0;
}
float area(float r) {
return PI * r * r;
}
#include <stdio.h>
#define PI 3.1416
float area(float r);
int main(void)
{
float r = 10;
printf("Area: %.2f", area(r));
return 0;
}
float area(float r) {
PI * r * r;
}
我想让这段代码在不使用return的情况下工作(只是为了学习如何用其他方式来做)。
使用 return
是唯一能真正 返回 函数中的一个值。
然而,C语法提供了两种备选方案。
比如说
#include <stdio.h>
#define PI 3.1416
void area(float r, float *p);
int main(void)
{
float r = 10;
float s;
area(r, &s);
printf("Area: %.2f", s);
return 0;
}
void area(float r, float* p) {
*p = PI * r * r;
return;
}
例如:在全局对象中定义一个全局对象,然后将表达式的值赋给该全局对象。
#include <stdio.h>
#define PI 3.1416
float s;
void area(float r);
int main(void)
{
float r = 10;
area(r);
printf("Area: %.2f", s);
return 0;
}
void area(float r) {
s = PI * r * r;
return;
}
但这被认为是不好的做法,因为函数与函数之间的联系,以及函数的实际使用,要比使用参数和返回类型更难理解,另一方面,参数和返回类型很好地显示了特定函数调用的关系和使用。
尽量避免使用全局对象,尽管在某些情况下,如果你在多个函数中使用一个对象,并且对象的作用被准确定义,那么全局对象是合适的。但在你提供的例子中,全局对象并不太适合,应避免使用。
如果没有值要返回,定义函数的返回类型为 void
.