我试图在我的程序中重新设计一个简单的函数来摆脱全局变量,但我不确定最好/最简单的方法是什么。
圆函数.c
#include "circlefunctions.h"
#define PI 3.14
float diameter;
double radius;
double surface;
double outline;
void circle_functions()
{
radius = diameter / 2;
surface = PI * (radius * radius);
outline = 2 * PI * radius;
}
圆函数.h
extern float diameter;
extern double radius;
extern double surface;
extern double outline;
void circle_functions();
问题是我目前在程序的其他部分使用这些变量。 我的解决方案是将值传递给数组并在程序内移动该数据。
还有其他人建议将我的功能重新设计成这样:
double circle_functions(double diameter)
{
double radius = diameter / 2;
double surface = PI * (radius * radius);
double outline = 2 * PI * radius;
return outline;
}
但是当我这样做时,我得到一个编译错误,变量:surface 未被使用。 (公平地说,我不确定如何正确使用第二种解决方案。
希望有人能给我一个关于如何解决这个问题的正确方向的指示。
编辑
根据要求:
例如,我还有一个名为 circlemenu.c 的文件(可能应该将其重命名为 circleresults.c)
#include <stdio.h>
#include "circlefunctions.h"
#include "circlemenu.h"
void info_top()
{
system("cls");
printf(" ----------------------------------------\n");
printf(" Typ the diameter of the circle: ");
}
void info_bottom()
{
printf(" ----------------------------------------\n");
printf(" The radius = %f \n\n" , radius);
printf(" The surface = %f \n\n" , surface);
printf(" The outline = %f \n" , outline);
printf(" ----------------------------------------\n");
}
最佳答案
你也可以这样做
double getRadius(double diameter)
{
double radius = diameter / 2;
return radius;
}
double getSurface(double diameter){
double radius = getRadius(diameter);
return PI * (radius * radius);
}
double getOutline(double diameter){
double radius = getRadius(diameter);
return 2 * PI * radius;
}
并且您在程序中使用这些 getter 函数。它将使您的代码可读且干净。
像这样使用它:
void someFunction(double diameter){
//need surface for some calculations.
double surface = getSurface(diameter);
//need outline to do something
double outline = getOutline(diameter);
//now use these as you want in your function.
}
按照你的例子:
void info_bottom(double diameter)
{
printf(" ----------------------------------------\n");
printf(" The radius = %f \n\n" , getRadius(diameter));
printf(" The surface = %f \n\n" , getSurface(diameter));
printf(" The outline = %f \n" , getOutline(diameter));
printf(" ----------------------------------------\n");
}
关于c - 设计一个函数,使其在 C 中没有全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29192894/