Я бы хотел, чтобы этот код работал без использования 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
.