c中函数内全局变量和局部变量问题
那个vs函数没有return s1、s2和s3给main啊,但是又能输出它们的值,是怎么个原理法,求大佬赐教(≧≦)/{:10_254:}//计算长方体的体积和其它三面的面积
#include<stdio.h>
int s1,s2,s3;
int vs( int a,int b,int c)
{
int v;
v = a*b*c;
s1 = a*b;
s2 = b*c;
s3 = a*c;
return v;
}
void main()
{
int v,l,w,h;
printf("input length,width and high\n");
scanf ("%d%d%d",&l,&w,&h);//long, width, high
v = vs(l,w,h);
printf("v=%d,s1=%d,s2=%d,s3=%d\n",v,s1,s2,s3);
} 因为你设置了全局变量呢 s1 s2 s3是全局变量,程序里的每个函数都能看到和使用它们,建议去复习一下作用域的知识 本帖最后由 jackz007 于 2021-3-31 12:00 编辑
全局变量属于静态变量,由编译器从程序的数据区分配存储空间,在程序的整个生命周期内都始终存在,从所有的函数中都可以访问。局部变量就不同了,它是在函数被调用的时候才临时通过从堆栈中分配存储空间创建,函数调用一旦结束,这些存储空间会立即被释放。所以,其生命周期仅限于函数被调用期间,而且,只能在本函数内部访问。 了解,谢谢大佬
页:
[1]