Sleep函数和硬件思维在C语言中的应用

来源 :硅谷 | 被引量 : 0次 | 上传用户:suaixin
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要: 在C语言的教学当中,利用Sleep()等函数通过更加直观的显示效果,来使循环嵌套的层次更加清晰,break和continue等作用更加直观;通过硬件思维中的内存结构可以使初学者对指针有一个最根本也是最直接的认识,从而学生无论是对指针的认知还是使用,都将变得非常容易。
  关键词: Sleep;循环;硬件思维;指针
  中图分类号:TP312.1 文献标识码:A 文章编号:1671-7597(2012)0210144-01
  
  0 引言
  循环嵌套对于初学者来说是个难以理清的知识点,尤其是内层循环和外层循环之间的关系也只能是靠多加练习来体会;虽然断点测试可以清晰的看到运行情况,但是复杂的地址和中间值对于初学者来说更难理解。我们这里借用一些辅助函数,比如说Sleep函数,来使嵌套的层次更加清晰,使break和contimue的对循环的影响更加清楚。指针更是让许多学生望而怯步,归根到底是学生对于硬件知识的缺乏,我们这里采用先对学生讲解内存存储原理的方式,是学生对指针的认识更加直接和深入。
  1 Sleep函数在循环嵌套中的妙用
  在学习循环嵌套的时候,我们往往都是写完代码后一次性将最终结果显示在窗口,或者一次性将所有的结果显示在窗口,这样就很难看清每次循环所做的具体事情。虽然我们可以用断点测试来看程序运行的具体情况,但是断点测试对于初学者来说太过复杂。在这里我们用一个比较直观的例子,再加上一些辅助函数来了解循环和循环嵌套的详细过程。
  例1:用C语言实现一个格式为“分:秒:毫秒”,范围为00:00:00~19:59:99。
  我们这里首先根据题意分析可得,1秒=1000毫秒,这里我们毫秒采用两位,即99代表990毫秒。我们采用6个int类型变量m1(分的十位),m2(分的个位),s1(秒的十位),s2(秒的个位),ms1(毫秒的百位),ms2(毫秒的十位),他们之间的进位关系为:1m1=10m2,1m2=6s2,1s1=10s2,s2=10ms1,1ms1=10ms2,利用这些变量之间的进制关系,我们采用6层for循环嵌套来实现,循环部分的核心代码如下:
  
  这样实现的结果根本做不到秒表读秒的效果,也看不出循环执行的具体层次。所以我们引入Sleep函数,并利用“ ”来打到比较好的读秒效果。在VC里面加上头文件#include,便可利用Sleep函数将程序挂起(暂停)一段时间,时间长短取决于Sleep(unsigned long)函数中的参数,其参数代表毫秒,Sleep(1)表示将程序在此挂起1毫秒,在本例题里,我们采用Sleep(10)表示将程序每执行一次printf函数就挂起10毫秒,刚好和秒表的右边第一位跳一次的时间相等。利用“ ”返回行首,这样我们改造后的代码为:
  
  return 0;}如此一来,我们就实现了秒表的效果。通过秒表的贴近日程生活的进位显示现象,我们可以非常清晰的看出循环嵌套之间的层次,从而对循环嵌套有一个一步到位的清楚认识;并通过添加Sleep函数的使用,还对学生自主拓展知识有一定的引导作用。
  2 硬件思维在理解指针中的妙用
  语言课是学生的入门课,由于没有地址的概念,所以对于指针的认知一直都是难点。我们这里先向学生介绍内存及内存地址的组织情况,从内存地址的角度来讲解指针,这将是学生对指针的认识和掌握有个一步到位的认识。
  所谓指针,其实就是所需的操作数的地址,我们这里以简单的直接一次间接寻址为例,我们先看一下内存和内存地址的简单组织情况:
  
  
  我们举一个简单的例子来说明,例如有如下定义:
  int a=1000,*p;
  p=&a;
  这里的内存和内存地址结构我们就以上面简单的形式组织,以典型的32位字长为例,变量值和指针(地址)均可放到内存单元中。刚开始定义变量a并赋予其初始值1000的时候,我们是将变量a的值1000存到000号单元中,然后定义指针变量p时是将008号单元分配给指针变量p,也就是说008单元中放的是指针变量p;p=&a操作是让指针变量p指向变量a,也就是将008单元中的指针变量值具体化为000,在以后的通过指针p引用变量a的时候,*p中的*的意思是指:取指针变量p的值(000)作为地址去找操作数,而000号单元中放的就是变量a。这也就是在引用时,*p和a是等价的。
  利用内存结构还很容易在函数中用指针传参能改变变量的值,而通过普通变量传参因为作用域的问题而无法改变变量值。例如有如下代码:
  
  输出结果中,a=1b=4,在调用函数fun的时候,第一个参数传的是变量a的值,但是main函数中的a和fun函数中的a并不是一个变量,000单元中的变量a是main函数中的a,003中的a是fun函数中的a,a=3是对fun中的a赋值,并未对main函数中的a做出任何改变;但fun函数中的*q=4是对q中的地址001中的变量b进行赋值,而001中的变量b刚好是main函数中的b,所以main函数中的printf语句输出的a还是1,而b则变成了3。
  以上就是硬件思维在指针学习中的作用。
  
  参考文献:
  [1]谭浩强,C程序设计(第四版),北京:清华大学出版社,2009.
  [2]蒋本珊,计算机组成原理(第二版),北京:清华大学出版社,2010.
其他文献
当今的一些公司、单位在进行综合布线工程时,虽然都严格参照各种国内外布线标准进行施工,但建好的系统并不能从直观上让维护人员看到网络拓扑情况。为有效提高维护效率,对颜
摘 要: 为解决高维空间下基于密度的离群点检测的低精度和高计算量的问题,提出基于特征选择和子空间搜索的离群点检测算法。该算法先通过特征选择选择数据的主要属性,然后对这些属性进行子空间搜索,从而有效的降低维数和避免全局搜索。最后通过一个数据集的实验来说明该算法的有效性。  关键词: 高维空间;离群点检测;特征选择;子空间搜索  中图分类号:TP301.6 文献标识码:A 文章编号:1671-7
请下载后查看,本文暂不支持在线获取查看简介。 Please download to view, this article does not support online access to view profile.
期刊
冷轧厂所生产的冷轧板主要面对汽车板和高档家电板,对板带厚度、宽度、表面质量及工艺性能都有很高的要求。如何全面系统准确的检测带钢的各项性能,成为冷轧生产中的一个重要
粗轧带钢宽度的精确控制可以降低带钢切边损耗,提高带钢成材率,给热轧生产创造直接经济效益。粗轧宽度控制就是针对侧压和水平轧制变形以及工艺参数对宽度变形的影响,采用控
摘 要: 随着计算机科学的不断发展,网络系统和各操作平台集成技术,尤其是Windows NT平台之下网络集成技术现下网络集成技术研究和开发应用过程中受到极大关注,主要讨论Windows NT平台下以C/S和B/S模式为代表的网络集成构建的原理以及探讨实现构建网络集成框架的有效性。  关键词: Windows NT平台;网络集成;构建  中图分类号:TP393 文献标识码:A 文章编号:167
原料圆白菜120克,烟熏三文鱼30克(8片),鲜果酱汁50克(3汤匙),水煮鸡蛋1个,大虾2只,盐、黑胡椒、橄榄油适量。做法鲜果酱汁的制作:用蜂蜜20毫升,柠檬汁20毫升,浓缩橙汁5毫升(
请下载后查看,本文暂不支持在线获取查看简介。 Please download to view, this article does not support online access to view profile.
期刊
该文从挂篮荷载计算、施工流程、支座及临时固结施工、挂篮安装及试验、合拢段施工、模板制作安装、钢筋安装、混凝土的浇筑及养生、测量监控等方面人手,介绍了S226海滨大桥
卫生填埋会产生大量垃圾渗滤液,若不妥善处理则会污染地下水、地表饮用水源,并对环境和人体造成极大危害,已受到研究者广泛关注.文章阐述了基于·OH与·SO4 -的高级氧化技术