• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

请问:下面这两个函数返回值有什么区别?

SingleYork 2016-09-10 浏览量:1205
本帖最后由 SingleYork 于 2016-9-10 17:01 编辑

如题:

请问:下面这两个函数返回值有什么区别?如果分别连续调用10次该函数,返回值分别是多少呢?最好能简单分析一下,谢谢!



int GetValue(void)
{
        int flag = 0;
        flag ++;
        return flag;
}

int GetValue(void)
{
        static int flag = 0;
        flag ++;
        return flag;
}

2 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • SingleYork 发表于 2016-9-10 17:02
    如果分别连续调用10次该函数,返回值分别是多少呢?

    times= 0
    vlaue1= 1
    vlaue2= 1
    times= 1
    vlaue1= 1
    vlaue2= 2
    times= 2
    vlaue1= 1
    vlaue2= 3
    times= 3
    vlaue1= 1
    vlaue2= 4
    times= 4
    vlaue1= 1
    vlaue2= 5
    times= 5
    vlaue1= 1
    vlaue2= 6
    times= 6
    vlaue1= 1
    vlaue2= 7
    times= 7
    vlaue1= 1
    vlaue2= 8
    times= 8
    vlaue1= 1
    vlaue2= 9
    times= 9
    vlaue1= 1
    vlaue2= 10

    第二个函数是个静态局部变量,相当于全局变量(只是只有在这个函数中能访问,但是生命周期是和全局变量差不多的),函数退出之后变量还在,而且只在第一次进入的时候做初始化,以后会跳过初始化语句,保留原来的值
    • 发布于 2016-09-10
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:8
  • 函数体内的static 就是指,在函数第一次运行的时候被创建。这现不用static的局部变量 一样的,也是只有调用了这个函数,这个变量才会被创建的。
    所以,这里的结果应该是一样的,都是1.

    • 发布于2016-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 汉云 发表于 2016-9-10 13:44
    函数体内的static 就是指,在函数第一次运行的时候被创建。这现不用static的局部变量 一样的,也是只有调用 ...

    如果分别连续调用10次该函数,返回值分别是多少呢?
    • 发布于2016-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 感觉没什么变化,都开始的时候变量已经赋值了0,
    • 发布于2016-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 第一个函数运行十次是1,

    第二个函数运行十次是10,

    第一个每调用一次flag都会重新赋值;
    第二个static flag只在初始化的时候赋值。
    • 发布于2016-09-11
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

请问:下面这两个函数返回值有什么区别?