鱼C论坛

 找回密码
 立即注册
查看: 1474|回复: 4

[已解决]c中函数内全局变量和局部变量问题

[复制链接]
发表于 2021-3-31 00:36:15 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
那个vs函数没有return s1、s2和s3给main啊,但是又能输出它们的值,是怎么个原理法,求大佬赐教(≧≦)/

//计算长方体的体积和其它三面的面积

#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);
}
最佳答案
2021-3-31 09:07:41
s1 s2 s3是全局变量,程序里的每个函数都能看到和使用它们,建议去复习一下作用域的知识
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-31 07:04:39 From FishC Mobile | 显示全部楼层
因为你设置了全局变量呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-31 09:07:41 | 显示全部楼层    本楼为最佳答案   
s1 s2 s3是全局变量,程序里的每个函数都能看到和使用它们,建议去复习一下作用域的知识
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-31 11:54:50 | 显示全部楼层
本帖最后由 jackz007 于 2021-3-31 12:00 编辑

       全局变量属于静态变量,由编译器从程序的数据区分配存储空间,在程序的整个生命周期内都始终存在,从所有的函数中都可以访问。局部变量就不同了,它是在函数被调用的时候才临时通过从堆栈中分配存储空间创建,函数调用一旦结束,这些存储空间会立即被释放。所以,其生命周期仅限于函数被调用期间,而且,只能在本函数内部访问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-31 15:03:19 From FishC Mobile | 显示全部楼层
了解,谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 16:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表