admin 管理员组文章数量: 1086019
2025年1月1日发(作者:java中的接口)
维普资讯
中国科技信息2008年第5期 CHINA SCIENCE Am TECHNOLOGY IlfOIldATION IVbr,2008
谈谈C语言中的变量
郝蕊洁运城学院公共计算机教学部044000
存地址。你声明一个变量,本质的意义
从计算机硬件层次上对变量进行了分析,重
点讨论了变量的概念、定义、数据类型和存
储类型。
个值,一个好的编译程序将帮助我们发
现那些还没有被给定一个值就被使用的变
量。不过,变量不一定需要初始化。在
函数外部定义的变量或者在函数内部用
static关键字定义的变量在没有明确地被程
是向系统要求一个存储空间。如果没有
变量,你可能就需要记下系统分给你的
存储空间地址,而有了变量之后,你不需
要再记下系统分给你的到底是哪个内存地
址,只用记住这个变量即可。往这个变量
中写入数据,就是往分给你的那个存储空
间中写,要读出存入的数据,只用访问变
c语言;变量;数据类型;存储类型
序初始化之前都已被系统初始化为0了。
在函数内部或程序块内部定义的不带sattic
关键字的变量都是自动变量,如果没有
明确地对这些变量进行初始化,它们就
会具有未定义值。如果没有对一个自动
变量进行初始化,在使用它之前就必须
保证先给它赋值。
1前言
程序设计的一项主要任务是对数据进
量即可,系统会自动并准确地找到那个存
储地址并从中取出你需要的数据。所以在
行处理。编写程序时需要定义各种变量来
存放数据。因此在所有的计算机高级语言
程序中,都存在着变量这样一个重要的概
念。但与其他语言中的变量相比, C语言
程序设计 (以下简称C语言)中变量这一
计算机硬件层次上,变量的本质实际上就
是内存中某块内存空间的名称。于是我们
就可以理解为什么常量的值不可变而变量
的值可变,你可以多次往存储空间写东西,
但取出的永远是最后一个存入的数据。
达就是我们要说的变量:和常量不
同,变量就是在程序运行时其值可以发
生变化的量。它的值是可变的;是取之
不尽,用之不竭的。一旦具有新值,老
值就不见了。每一个变量都有一个变量
4变量的数据类型
程序设计最基本的问题是解决对所要
处理数据的描述。任何一个数据,都有
一
知识点所包含的内容更为丰富,包括变量
的定义、数据类型、作用域、存储类别和
存储方式等。其中有些知识点有一定的难
度,例如变量的本质、生存期和作用域、变
量的同名等等。以下笔者对C语言中的变
量及与变量相关的知识点做了一些总结,
希望能对初学者学好C语言有所帮助。
个确定的表示形式、一个确定的值以
及确定的所能参与的各种运算,这就是
数据类型。程序中变量的本质表现在存
在时间和占用空间达两个方面。变量的
数据类型决定了变量占用的存储空间。
它受类型说明语句的制约。任一变量都
名,由标识符表示。为变量起名时,最
好是见其名就能知其意。
在计算机硬件层次上对变量进行更深
层次的认识是非常重要的。指针的学习
就需要这方面的知识。所以,想学好指
针,必须对变量的本质具有深刻的认
识。
必须具有确定的数据类型。不管变量怎
样变化,其值都必须符合该类数据类型
的规定。
2变量的概念
与数学中变量的概念一样,是指问
题中的名词或属性的取值。
在学习程序设计语言之前,我们已
5变量的存储类型
5.1变量的存储类型
变量的存储类型决定变量作用的有效
时间和范围。它受类型说明语句位置的
制约。
经对计算机系统有了一个全面的了解,
在此基础上,我们从计算机硬件层次对
变量进行深层次的认识。计算机中的存
储器以字节为单位划分成了很多空间,
是存放数据的基本场所。变量数据一般
也存放在这些内存空间中,对这些空间
的使用,系统是通过一个地址来进行
的。你存入一个数据到地址2000中,下
次想再取出这个数据时,只需要访问地
3变量的定义和初始化
在C语言中,使用任一变量前都必须进
行定义。一个变量定义的完整格式如下
(花括号表示可省):
变量作用的有效范围称为变量的作用
域。变量作用的有效时间称为变量的生
{存储类型}数据类型变量名l{{=表
达式l},变量名2“=表达式2},…,{变量名N
{=表达式N…};
定义一个变量的过程实际上就是向内
存申请一个符合该类数据类型的空间,
以后对变量的操作就代表了对对应内存空
间的存取操作。
存期。变量的作用域指出了变量在什么
范围内有效,这种有效指的是在非作用
域中引用该变量会直接导致编译错误;
变量的生存周期指明了变量的存活期,
它从系统为变量分配内存空间开始,到
系统收回此内存空间为止,同样,在变
量的生存周期范围以外引用该变量也会导
致编译错误。
址2000即可,即通过内存地址找到特定
的存储空间并对数据进行存取(内存地
址是一个二进制数,随内存空间大小的
不同其位数也不同)。达就出现一个问
题:编写程序时如何去记忆你所使用的
在这个定义中,存储类型决定了变量
存放在何处,数据类型决定了这个变量所
前面讲了变量的类型说明语句决定了
变量的存储类型;变量的说明语句位置
决定了变量的存在时间,因而将变量分
那些内存单元?很显然,记下每个内存
占的字节数,变量名决定了这个变量在本
单元的地址不是一个好的方法,为了解 程序中的名字,表达式则决定了这个变量
决这个问题,人们引入了变量来代替内 的初始值。使用变量之前应该给变量一
一
94一
维普资讯
为全局变量和局部变量。 时间。可以加快程序的运行速度,但是
《 上接第93页
全局变量:在所有函数体之外定义 由于寄存器与机器的硬件有关,所以系
的变量属于全局变量。它有三个特征: 统对寄存器的使用有若干限制。
1.主动性和自觉性比较差的学生不
作用域:在定义开始之后的所有函
定义寄存器变量时应注意:只有自动
太适合Blog学习
数中;
变量和函数的形式参数能被定义为寄存器
在网络环境组织研究性学习的过程
生存期:从程序开始到程序结束的 存储类型;寄存器变量的数据类型只能是
中,有些主动性和自觉性比较差的学生
全部时间;
整型、字符型或指针型;寄存器的数目是
不太适合Blog学习,有个别学生经常打
使用要求:全局变量不能与程序的任 有限的,决定了寄存器变量的个数是有限
着开展研究性学习的幌子在网上玩游戏,
何函数中的变量名(局部变量)同名,若
的,建议用一两个即可。
结果被家长告诉了老师。
同名,则全局变量在该函数中不起作用。
5.2.3静态存储类型。静态存储类型
2.基于网络的研究性学习要求各方
局部变量:在函数内部定义的变量属
说明符:static。
面的条件较高
于局部变量。局部变量仅由其被定义的模 静态局部变量:在局部变量的说明
首先要求教师应具备较强的教学组织
块内部的语句所访问。对于局部变量有几
前加上static就是静态局部变量。它具有以
能力,教师只有精心设计一系列问题、
个特征: 下特点:生存期是整个源程序。也就是说
任务和活动,才能紧紧抓住学生的注意
作用域:只在定义变量的函数内; 即使函数调用结束后,它所占用的存储空
力,才能引导他们在Blog平台上完成学
生存期:在函数被调用时产生,函
间也不释放,其值一直存在,下一次调用
习任务,否则基于Blog的教学将演变成
一
数调用结束后消失。 时继续使用;静态局部变量的生存期虽然
种毫无目的的“放羊”。在研究初
使用特点:不同函数中的局部变量 :为整个源程序,但是其作用域仍与自动变
期,笔者由于经验不足,组织不当,差
互不干涉,即使是同名的局部变量,彼 量相同,即其它函数不能引用它;若静态
点导致实验无法进行,又专门请我校的
此之间是相互独立的;在函数中使用了 局部变量未赋初值,则由系统自动赋初值
张老师参与指导,才使研究性活动走向
和全局变量同名的局部变量,则在该函j
为0(数值型变量)或 \0(字符变量)。
正轨。其次还要求教师有较高的信息处
数中局部变量有效。
静态全局变量:全局变量的说明之前
理能力,对于学生网上各方面的交流工
5.2可控的存储类型
加上以static就构成了静态全局变量。全局
具都要会使用,否则实验也无法顺利完
全局变量和局部变量的性质,是由编
变量和静态全局变量的区别在于:当一个
成。再次,还受硬件条件和上网条件制
译技术的存储分配决定的。C语言创造了
源程序由多个源文件组成时,全局变量的
约,有些学生因上网条件受限,没能及
一
种机制,能让用户强行改变变量的存储
作用域是整个源程序,即在各个源文件中
时完成任务。
类型,这种机制称为可控的存储类型,以
都是有效的。而静态全局变量则限制了其
五、结束语
下分别介绍这四种可控的存储类型。
作用域,即只在定义该变量的源文件内有
总之通过这次实验,自己也受益匪
5.2.1自动存储类型。自动存储类型说
效,在同一源程序的其它源文件中不能使
浅,不仅丰富了知识,提高了能力,而且
明符:auto。 用它。
与学生建立了朋友的关系,同时也被Blog
C语言的编译系统对程序中所有未加
5.2.4外部存储类型。外部存储类型
这个网络工具在教育中的众多优势所吸引。
存储类型说明的局部变量都默认为自动存 说明符:extern。
实践证明Blog在基于网络的研究性学习中
储类型。函数中的形参和在函数中定义 全局变量的作用域是从定义的位置开
的应用,对培养学生的信息素养和终身学
变量(包括复合语句中定义的变量)都
始到源程序文件的末尾。有时需要扩展
习能力是一个有效的方法,与国家倡导的
属此类。自动存储类型的局部变量(也
其作用域,可以用extern进行声明。
素质教育要求相一致。Blog将会成为解脱
叫自动变量)使用时注意以下几点:
6结束语
传统教育束缚的重要工具,将会在今后教
1)只在定义它的函数被调用时,系
变量在程序设计中使用最为频繁,
育中扮演重要角色。
统才给它分配存储空间,调用结束,它
但是它所涉及到的知识点又特别多,本文
所占的存储空间也被释放;
就变量的特点进行了总结归纳,希望对初
2)作用域仅限于它所在的函数体或
学者有所帮助。
[1]王伟.基于网络的小学生研究性学习
符合语句体;
[J].中国远程教育.2005(6)
3)在函数体内使用一个局部变量之
[2]祝智庭.信息教育展望[M],上海:华
前必须为它设定初值。
[1]谭浩强.c语言程序设计 .第2版.北
东师范大学出版杜.2002(2)
5.2.2寄存器存储类型。寄存器存储
京:清华大学出版社.2000:172-176
[3]曾建梅.Btog——研究性学习的新利
类型说明符:register。
[2]徐新爱.c语言的变量剖析[J].电脑开发
器[EB/OL].
寄存器存储类型是C语言的一大特
与应用.第2O卷第6期
http://202.121.7.5/xsbj/xzyd/chlm/1.htm
点。寄存器是CPU的一部分,直接将变
量数据存放在寄存器中,节省了数据从
郝蕊洁I1 982一) 女,山西临猗人,本
刘秀菊.菏泽学院计算机系 教育硕士 讲
内存到运算器以及从运算器到内存的传送
科.助教.研究方向:计算机应用
师。
版权声明:本文标题:谈谈C语言中的变量 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1735751197a1688569.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论