来自于一道练习题目。题目中要求将一全局变量改为局部变量。我用的是一函数的返回值来实现,而参考答案却是使用到了自动变量的地址,真是妙啊!具有文件作用域的内部链接变量能用其变量名在让整个文件中所有的函数对其实现访问;而在主函数中定义的自动变量其内存区在程序运行过程中是不被释放的啊,所以对其地址进行操作也能在一定程度上将其当作全局变量来使用。不过这里的关键点显然不是对地址或者对变量名的访问方式不同,地址及变量名作为参数传递给处理函数的方式的不同。原来这种方式的优点不只是体现在字符数组的处理中!
#include <stdio.h>
int main(void)
{
int critic(void);
printf("How many pounds to a firkin of butter?/n");
while((critic()) != 56)
printf("No luck,chummy.Try again!/n");
printf("You must have looked it up!/n");
return 0;
}
int critic (void)
{
int units;
scanf("%d",&units);
return units;
}
参考程序:
#include <stdio.h>
void critic(int * u);
int main(void)
{
int units; /* units now local */
printf("How many pounds to a firkin of butter?/n");
scanf("%d", &units);
while ( units != 56)
critic(&units);
printf("You must have looked it up!/n");
return 0;
}
void critic(int * u)
{
printf("No luck, chummy. Try again./n");
scanf("%d", u);
}
2009.7.28