445519014 发表于 2021-3-31 00:36:15

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);
}

wp231957 发表于 2021-3-31 07:04:39

因为你设置了全局变量呢

chxchxkkk 发表于 2021-3-31 09:07:41

s1 s2 s3是全局变量,程序里的每个函数都能看到和使用它们,建议去复习一下作用域的知识

jackz007 发表于 2021-3-31 11:54:50

本帖最后由 jackz007 于 2021-3-31 12:00 编辑

       全局变量属于静态变量,由编译器从程序的数据区分配存储空间,在程序的整个生命周期内都始终存在,从所有的函数中都可以访问。局部变量就不同了,它是在函数被调用的时候才临时通过从堆栈中分配存储空间创建,函数调用一旦结束,这些存储空间会立即被释放。所以,其生命周期仅限于函数被调用期间,而且,只能在本函数内部访问。

445519014 发表于 2021-3-31 15:03:19

了解,谢谢大佬
页: [1]
查看完整版本: c中函数内全局变量和局部变量问题