Chinaunix首页 | 论坛 | 博客
  • 博客访问: 54826
  • 博文数量: 51
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 410
  • 用 户 组: 普通用户
  • 注册时间: 2018-08-26 01:30
文章分类

全部博文(51)

文章存档

2020年(2)

2018年(49)

我的朋友

分类: C/C++

2018-08-29 21:19:49


05. 计算下面程序结果,并说明auto和static的区别

点击(此处)折叠或打开

  1. /*
  2.  * exercise03.c
  3.  *
  4.  * Created on: 2012-11-5
  5.  * Author: xiaobin
  6.  */
  7. #include <stdio.h>

  8. int sum(int a)
  9. {
  10.     auto int c = 0;
  11.     static int b = 3;
  12.     c += 1;
  13.     b += 2;

  14.     return (a + b + c);
  15. }

  16. int main(int argc, char* argv[])
  17. {
  18.     int i;
  19.     int a = 2;

  20.     for (i = 0; i < 5; i++) {
  21.         printf("%d\n", sum(a));
  22.     }
  23.     return 0;
  24. }
计算结果:

点击(此处)折叠或打开

  1. 8
  2. 10
  3. 12
  4. 14
  5. 16

auto和static的区别:

    auto对于一个程序块来说是局部的,在退出程序块时该对象将消失。如果没有使用auto保留字,或者如果使用了auto保留字,则程序块中的声明生成的都是自动存储类对象。

    static可以是某个程序块的局部对象,也可以是所有程序块的外部对象。无论是哪一种情况,在退出和在进入函数或程序块时其值将保持不变。



阅读(894) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~