最经买了一本好书——《C语言深度解剖》,书比较薄,看的比较快,而且也非常地吸引人,对于其中的一些讲解和例子都非常的经典,感觉有一些新的感悟。可能我的想法和水平非常菜,但是我只想是写点东西出来,写给自己,写给一个即将毕业的苦逼工科男,写给那些曾经偷懒没好好学习的过去,和写些东西安慰现在的自己,表示我过的很踏实。

对于静态变量有两种:一种是静态全局变量;另一种是静态局部变量;

通俗的说来,静态全局变量就是放在静态区的全局变量,变量在程序执行的时候,无论被调用或者使用多少次,变量的值始终保持不变,直到程序执行完后,也不会释放空间,也就是说每一次执行的时候程序的时候,变量的值仍然存在;静态局部变量可能是在某个被调函数内部的一个变量,其作用范围只能作用域这个被调函数,出了被调函数,这个变量是不能够被直接使用的。

下面通过书中的例子来加深一下对这个关键字的印象和感受

static  int  j;

void  fun1 (void)

{

static  int  i  =  0;

i++;

}

void  fun2 (void)

{

j = 0;

j++;

}

int  main(void)

{

int  k = 0;

for(k=0;k<10;k++)

{

fun1();

fun2();

}

return 0;

}

/****************************************************************************************************************************

在VC++6.0中实验,最终得出结论,i的值为10,j的值为1;

时间:2013年12月2日23:40:04

收获:通过使用F11功能键,结果在watch窗口中看不到i变量值得变化,

我通过在main中加入printf打印出i和j的值,结果报错了“error C2065: 'i' : undeclared identifier”

我意识到,i变量的作用域只能在fun1函数中,出了函数就无法识别这个变量。所以我换了一种方法,

通过在fun1函数中加入printf,我们可以看到i变量逐步变化的过程,这样最终打印i的结果为10;

再来说说j变量,j变量定义的是静态全局变量,这样的话,j变量的作用域是整个函数,整个函数执行的过程中,

j的值会发生变化,但是为什么是1呢?结果我想到,j变量的值在函数执行一次的时候会在main函数调用fun2

的时候自加1,从0变为1,我一直以为最后输出j的结果是10,后来仔细看看,发现了一个东西在作怪,

就是每次调用fun2的时候,都会把j的值赋值为0,从而使j又从0开始,所以最终j的值保持在1。

********************************************************************************************************************************/

实验 c语言作用域实验,关于《C语言深度解剖》一些例程的实验和感悟——关键字static...相关推荐

  1. c语言作用域详解,C语言之作用域

    1:作用域的概念 (1)作用域是描述这个变量起作用的代码范围. (2)基本来说,C语言变量的作用域规则是代码块作用域.意思就是这个变量起作 用的范围是当前的代码块.代码块就是一对大括号{}括起来的范围 ...

  2. C语言程序设计蔺德军,C语言程序设计上机实验与习题解答(第2版)

    目 录 实验1 操作环境与过程\t1 1.1 实验目的\t1 1.2 实验预习\t1 1.3 使用VC++ 6.0上机实验\t1 1.4 使用Dev-C++上机实验\t4 1.5 使用VC++ 201 ...

  3. c语言程序设计论文结构,c语言顺序结构设计实验报告.docx

    c语言顺序结构设计实验报告 姓名王中华班级学号31实验日期课程名称C语言程序设计指导教师陈强成绩 实验名称:C语言的三种结构-顺序结构 [实验目的] 1.理解C语言程序的三种基本结构.2.掌握变量定义 ...

  4. 重理工c语言实验指导书答案,常熟理工学院 C语言程序设计实验实验指导书及答案...

    常熟理工学院 C语言程序设计实验实验指导书及答案 实验一 熟悉C程序运行环境 班级 学号 姓名 成绩 一.实验目的 1. 熟悉C语言Visual C++6.0调试环境. 2. 掌握C程序的编辑.调试及 ...

  5. java开发环境及数据类型实验_实验项目1 Java开发环境与语言基础

    <实验项目1 Java开发环境与语言基础>由会员分享,可在线阅读,更多相关<实验项目1 Java开发环境与语言基础(14页珍藏版)>请在人人文库网上搜索. 1.实验项目1 Ja ...

  6. C语言找出4个最大和4个最小数,济南大学C语言程序设计教案:C语言实验课程第四课.doc...

    济南大学C语言程序设计教案:C语言实验课程第四课 C语言实验课程第四课 实验一 数组与函数.数组与指针 一.实验目的 1 掌握数组名作为函数参数的含义.使用方法. 2 掌握多维数组作为函数参数的使用方 ...

  7. python语言程序设计实践教程实验八答案_清华大学出版社-图书详情-《Java程序设计教程及实验指导》...

    前言 Java程序设计教程及实验指导Java是一门主流的面向对象的程序设计语言,是面向对象程序设计教学的主流语言.本书由有多年教学经验的专业教师编写,分为教程以及实验与课程设计两部分.教程部分从Jav ...

  8. c语言实验题水仙花数5359,《C语言程序设计》实验报告(实验1-12).doc

    <C语言程序设计>实验报告(实验1-12).doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会 ...

  9. 查询日历的综合性C语言程序的设计,C语言程序设计实验指导书060522.doc

    <C语言程序设计>实验指导书 课程编号:142003 课程名称:C语言程序设计 适应专业: 安全防范.计算机侦查专业必修课,交通管理专业选修课 课程类别:专业必修课 实验教学种类:课程内实 ...

最新文章

  1. 有你认识的么?新鲜出炉!云+社区2020年度优秀讲师TOP作者榜单!
  2. FCKeditor所有版本任意文件上传缺陷
  3. TCP之超时重传机制
  4. 去除行块级标签之间的默认间距
  5. Windows服务的程序方面的资料
  6. C++简单排序,堆排序
  7. pytorch 之 冻结某层参数,即训练时不更新
  8. 哈尔滨现大雾天气 高速封闭航班推迟起飞
  9. 嵌入式Linux系统编程学习之二十无名管道(PIPE)
  10. python教程视频完整版-Python教程视频完整版
  11. Docker是什么,有什么用?一看就明白
  12. 微信这项功能即将下线,赶快导出数据!
  13. 聊聊docker【二】基本命令
  14. Soul是一个基于兴趣、场景、算法搭建的“第三空间”?
  15. css背景颜色跟随文字颜色、设置文字颜色反色
  16. 【Leetcode】780. Reaching Points
  17. HTML5CSS3基础:CSS选择器与其伪类(6)
  18. 孰能浊以止,静之徐清
  19. 软件测试-黑盒测试,白盒测试,灰盒测试
  20. sd/mmc驱动框架-(三)mmc子系统的数据结构

热门文章

  1. 日志文件中出现大量的“Closing connections ... MILLISECONDS“ 日志,且数量持续不断增加
  2. java set怎么初始化_用Java初始化HashSet
  3. 优秀的游戏测试是怎样的?
  4. 虚拟机安装Ubuntu网络无法连接,右上角网络图标不见
  5. 贪心算法2——哈夫曼编码
  6. css实现好看的card展示效果
  7. CRM的虚拟与现实 让赢得订单更容易
  8. SQL插入和插入语句:带示例MySQL语法
  9. 近5年安徽省高考状元名单,全部被北大清华录取
  10. UC(Unified Communication)统一通讯故事 2010-11-3