#include

int a=1;

int f(int c)

{

static int a=2;

c=c+1;

return (a++)+c;

}

int main()

{

int i,k=0;

for(i=0;i<2;i++){

int a=3;

k+=f(a);

}

k+=a;

printf("%d\n",k);

return 0;

}

最后输出14

考虑作用域及可见性的问题,以及++的用法

按照程序执行的顺序来分析

i = 0 时,定义了int a ,a的作用域仅仅在int a=3;k+=f(a);语句中,执行完后a就被释放了。先做f(3),

此时在f(3)的stack区中

c = c+1,执行完后c=4;

(a++)+c的值是2+4=6,此时全局变量a被局部变量a所覆盖,不可见,但是有作用域。

然后a=3并且保存在data区中,直到程序结束后才释放 f返回时,返回的是6,则k=6 i = 1时,做f(3),同上,c=4,注意此时局部静态变量a的值是3,因此(a++)+c的值是7,之后a自增成4 f返回时,返回的是7,那么k+=f(a)的结果就是6+7=13 i = 2 时,退出循环 k+=a;此处的a是全局变量a,值为1,所以k的值变成了14!

c语言自动变量与静态变量,C语言的中的静态变量和局部变量(自动变量)相关推荐

  1. 静态页面和动态页面中的静态和动态到底指的是什么

    今天讨论一个话题,这是在考研的专业课考试中的一个问题:静态页面和动态页面的联系和区别 ,这考的我就很猝不及防 ,这个方面虽然以前有了解 ,但是理解得并不深刻,网安方向涉及到的东西太多了,慢慢学习吧~首 ...

  2. python中静态变量和静态方法_python类和函数中使用静态变量的方法

    本文实例讲述了python类和函数中使用静态变量的方法.分享给大家供大家参考.具体分析如下: 在python的类和函数(包括λ方法)中使用静态变量似乎是件不可能[Nothing is impossib ...

  3. linux 怎么设置静态ip,如何在Linux中设置静态IP地址和配置网络

    如果您是Linux系统管理员,那么当您需要在系统上配置网络时,就会出现时间. 与可以使用动态IP地址的台式机不同,在服务器基础架构上,您需要设置静态IP地址(至少在大多数情况下).IP地址 :192. ...

  4. c语言输出四行金字图案,C语言学习笔记1).doc

    C语言学习笔记1) VC++6.0学习笔记 进入方法: 1.建立一个工程 文件--新建--(选择)工程--(选择)Win32 Console Application--位置(选择存贮的位置)--工程名 ...

  5. c语言静态函数调用静态变量_C语言中的静态变量和函数

    c语言静态函数调用静态变量 C中的静态变量 (Static Variables in C) Basically, when static variables are declared, they cr ...

  6. C语言中的静态变量和静态函数

    C中的静态变量 基本上,声明静态变量时,它们仅创建它们的单个副本,也称为类变量 .它们保留在相应范围内分配的值,并且不会在其新范围内再次初始化变量. 静态变量在代码执行期间保留在内存空间中. 静态变量 ...

  7. 嵌入式c语言为什么变量定义在前面,嵌入式C语言数据类型和变量详解

    原标题:嵌入式C语言数据类型和变量详解 一般来讲,标准的C语言类型在嵌入式编译器中是合法的.但由于嵌入式控制器的受限环境.嵌入式c语言的变量和数据类型具有新的特征,这些特征体现在如下方面. 嵌入式C语 ...

  8. c语言程序的入口是哪部分,C语言入口函数和LD_PRELOAD环境变量

    零.C语言入口函数 从第一天学习C语言开始,我们的脑子里就深深烙下这样一个概念:C语言程序总是从main()函数开始执行,main()函数结束,程序也就结束了.在平时的练习中貌似这没有问题,但事实真的 ...

  9. c语言定义数组变量初始化为0,c语言数组初始化——int a[N] = {0};

    初学数组,以华科的<c 语言与程序设计>为教材,参考了<一站式学习c编程>,后者数组一章有串代码如下 int main(void) { int i, histogram[10] ...

  10. 两个变量实现查找坏环c语言,C/C++编程笔记:C语言编程知识要点总结!大一C语言知识点(全)...

    程序员无言 2020-07-07 一.C语言程序的构成 与C++.Java相比,C语言其实很简单,但却非常重要.因为它是C++.Java的基础.不把C语言基础打扎实,很难成为程序员高手. 1.C语言的 ...

最新文章

  1. System.Timers.Timer的Enable、Start、Stop记录
  2. 基础、数据、开发、部署,AI 时代企业的全方位升级
  3. 产生随机数的用户图形界面Python GUI
  4. Eclipse真机测试注意事项
  5. matlab地球卫星模型,地球卫星三维运行轨道MATLAB仿真
  6. perl exe执行提示缺少文件解决方法
  7. [css] 如何使用css实现跨浏览器的最小高度?
  8. Go语言之进阶篇http服务器获取客户端的一些信息
  9. CountDownLatch原理简介和使用过程
  10. Linux下使用ps命令来查看Oracle相关的进程
  11. linux 内核优化实战,Linux编译优化必须掌握的几个姿势总结
  12. 遮罩层和弹出层(居中)
  13. Android经典的大牛博客推荐(排名不分先后)!!
  14. SAP 软件PS 模块系统操作之一工作分解结构(WBS)的创建
  15. java定义一个getsize方法_java.util.zip.ZipEntry.getSize()方法示例
  16. 笔记本电脑建立Wifi热点多种方法
  17. 如何利用快解析快速实现动态域名解析,内网穿透?
  18. Android计步模块(类似微信运动 今日步数)
  19. MFC实现弹出模态对话框和非模态对话框(基于对话框)
  20. 神一样的编程语言? -- 发现一个编程语言“shen”

热门文章

  1. python 三维数组_NumPy处理图像不香吗?我用Python把秋日里最美的景色做成了这种效果~...
  2. java字节字符流实验报告_Java第09次实验(IO流)--实验报告
  3. 计算机网络系统是弱电工程,弱电工程包括哪些类型?常见的问题又有哪些?
  4. phpstudy配置oracle,phpStudy配置sql、oracle---博主摘录
  5. hashmap头插法和尾插法区别_Java程序员必知:HashMap进行put操作会不会引起死循
  6. mds算法python函数_分享python mds,sha256加密算法,c#对应sha256加密算法
  7. 蓝魔i11pro运行linux,不仅仅是变大了 蓝魔i11pro新玩法
  8. java做flv直播服务器,EasyDSS流媒体服务器软件(支持RTMP/HLS/HTTP-FLV/视频点播/视频直播)-正式环境安装部署攻略...
  9. 江苏省计算机学业水平测试时间,江苏2018年高中学业水平考试时间公布
  10. 信息技术计算机网络课堂实录,信息技术教案:计算机网络简介