- 6
- 0
- 约小于1千字
- 约 2页
- 2021-09-30 发布于四川
- 举报
经验技巧3-4 巧用外部变量
在编写C语言程序时,如果不是特别需要的地方尽量不要使用外部变量,而是使用动态变量。这是因为动态变量只有在使用它时,系统才为其分配内存空间,使用结束立即释放,而外部变量在编译时就分配了存储空间,在整个程序的执行过程中都占用内存;另外,外部变量可以为多个函数使用,每个函数都可能改变外部变量的值,使我们难以清楚的判断某一时刻外部变量的值是多少,这就降低程序的可读性。
当然,我们也可以利用外部变量能为多个函数使用特点,解决某类实际问题。由于一个函数最多有一个返回值,所以当一个实际问题需要有多个结果时,目前(在没有学习数组、指针之前)就只能编写多个函数(像例3-3)来实现,这将产生许多重复代码,也很麻烦。在现有知识的情况下,我们可以利用外部变量来解决这类问题。
【示例】编写程序,求一元二次方程ax2+bx+c=0(a≠0)的两个实数根。假设给定的一元二次方程有两个不相等的实数根,即b2-4ac0。
程序代码如下:
#include stdio.h
#include math.h
double x1,x2;//用来存放方程的两个实数根
void RealRoot (double a,double b,double c)
{
double p,q;
p=-b/(2*a);
q=sqrt(b*b-4*a*c)/(2*a);//sqrt为求平方根库函数
x1=p+q;//求得第一个实数根
x2=p-q; //求得第二个实数根
}
int main()
{
double a,b,c;
printf(请输入系数a,b,c,需保证b*b-4*a*c0:);
scanf(%lf%lf%lf,a,b,c);
RealRoot (a,b,c);
printf(方程%.2lfx*x+%.2lfx+%.2lf=0的两个实数根是:\n,a,b,c);
printf(x1=%.2lf,x2=%.2lf\n,x1,x2);//输出外部变量的值
return 0;
}
此程序中,定义了两个外部变量x1,x2用来存放方程的两个实数根,由于这两个外部变量定义在了RealRoot函数和主函数main之前,所以在这两个函数中都起作用,RealRoot函数用来求得x1,x2的值,求得结果在主函数中输出。
原创力文档

文档评论(0)