例8.16外部变量与局部变量同名。
int a=3,b=5;/a\,b为外部变量/a,b作用范围
max (int a,int b)/a、b为局部变量/
{int c;
c=a>b?a∶b;
return (c);形参a、b作用范围
}
main( )
{int a=8; /a为局部变量/
printf ("%d",max (a,b));〖JB)}]局部变量a作用范围全局变量b的作用范围
}
运行结果为
8
我们故意重复使用a、b作变量名,请读者区别不同的a、b的含义和作用范围。第1行定义了外部变量a、b,并使之初始化。第2行开始定义函数max,a和b是形参,形参也是局部变量。函数max中的a、b不是外部变量a、b,它们的值是由实参传给形参的,外部变量a、b在max函数范围内不起作用。最后4行是main函数,它定义了一个局部变量a,因此全局变量a在main函数范围内不起作用,而全局变量b在此范围内有效。因此printf函数中的max(a,b)相当于max(8,5),程序运行后得到结果为8。