“计算机组成原理”的课程改革与实践“计算机组成原理”的课程改革与实 践 摘要:“计算机组成原理”课程教学历来是计算机专业教学中的重点,本文分析了“计算机组成原理”课程的定位和特点,提出了一种从整体功能推进到局部组成、从微观实现抽象到宏观结构的层次化教学内容设计模式,探讨了“计算机组成原理”教学与学生能力培养之间的关系,探索并实践了一种研究性的教学方法。实践证明,这样的方法也的确收到了良好的效果。 关键词:计算机组成原理;课程改革;教学方法;实践 1引言 “计算机组成...
中央处理器是“计算机组成原理”课程中最难掌握的教学内容,教学过程可以分为三个步骤推进。第一步是要让学生掌握控制器的功能、组成和结构,以及控制信号的作用。教学方法上应采用启发式的教学方法,首先应通过结合指令系统、存储器系统、运算单元等已学部分的知识,系统地分析机器指令执行过程中所需要的功能支持、功能部件(如寄存器部件)支持和数据通路支持,进而归纳总结控制单元的功能、组成和结构。在此基础上,以一个便于课程教学的简化的指令系统和模型机的设计为目标,从完整规划机器指令执行的指令流和数据流入手,系统地分析指令执行过程中可能出现的指令代码传送路径、操作数地址的形成和传送路径、操作数传送路径,以及各个功能部件(如存储器、各类寄存器、运算单元等)和这些传送路径所需要的控制信号。以这些分析为基础,一步一步地引导学生分析、归纳总结并进一步完成控制单元内部数据通路的设计和控制信号的部署,进而完成模型机控制单元内部结构设计。教学过程第二步以模型机的结构为基础,详细分析和讲解典型机器指令的执行周期和指令执行的详细流程,使学生充分理解典型指令执行过程中每一个时间段所实现的基本功能,以及为实现该基本功能在该时间段上所需要的微操作控制信号,进而使学生掌握每一条指令执行周期和详细执行流程的分析方法。教学过程的第三步是在完成上述教学内容的基础上,结合模型机的控制方式和控制时序信号,仔细分析和讲解模型机中各种微操作控制信号的逻辑综合方法,以及控制单元的设计方法。通过上述三个阶段的递进式教学,使学生了解并基本理解控制器的基本工作原理,掌握机器指令执行的真正物理含义,从本质上掌握计算机程序运行的实质。
5结束语
建筑节能技术分析
关键词:建筑节能技术分析
摘要:随着“以人为本”设计理念的提出,人们对住宅的舒适性要求越来越高,建筑能耗也随之增高。据统计,目前我国建筑能耗约占国民经济总能耗的25%左右,且呈上升趋势。另一方面,随着建筑能耗的增加和大量空调设备的安装,“城市热岛效应”日益严重,使环境日益恶化。我国建筑节能的重点应为:建筑本体的节能、采暖系统节能、提高照明和其他电器的效率、大型公共建筑节能。
随着科学技术的日新月异,能源短缺已不容忽视,节约能源已受到世界性的普遍关注,在我国亦不例外。目前,全世界有近30%的能源消耗在建筑物上,长此以往,将严重影响世界经济的可持续发展。因此,能源问题将成为本世纪的热门话题。
一、国外建筑节能技术的发展
美国一家大学曾设计建造了一种四居室的生态房。它的热能来源于人工散热、阳光及使用家电设备所产生的热量;用电依靠风力发电机和太阳能电池;用水是从屋檐流下来经过处理的雨水;粪便和污水则流入一个堆肥坑里,经发酵后供花园施肥用。美国一家建筑公司用回收的垃圾建筑房屋,墙壁是用回收的轮胎和铝合金废料建造的;屋架所用的大部分钢料是从建筑工地上回收来的。
日本1997年建成了一栋实验型“健康住宅”。除了整个住宅尽可能选对人体无害的建筑材料外,墙体还被设计成双重结构,每个房间建有通风口,整个房屋系统的空气采用全热交换器和除湿机进行循环。全热交换器能够有效地回收热量并加以再次利用,其过滤器可有效地收集空气中细小的尘埃,从而能够抑制霉菌等过敏生物繁殖。这种资源的回收利用,不仅变废为宝,而且减少了环境污源,节约了能源。
德国建筑师塞多•特霍尔斯建造了一座能跟踪阳光的太阳房屋。房屋被安装在一个圆盘底座上,由一个小型太阳能电动机带动一组齿轮。房屋底座在环形轨道上以每分钟转动3cm的速度随太阳旋转。当太阳落山以后,该房屋便反向转动,回到起点位置。它跟踪太阳所消耗的电力仅为房屋太阳能发电功率的1%,而所吸收的太阳能则相当于一般不能转动的太阳能房屋的2倍。
二、我国建筑节能存在的问题
我国正处于房屋建筑的高峰时期,建筑速度之快,规模之大,可谓前所未有。2003年,我国城乡建筑竣工面积达20.3亿平方米(其中城镇12.7亿平方米),超过所有发达国家年建成建筑面积的总和。但令人忧虑的是,在新竣工的建筑中,节能建筑面积不到1亿平方米,尚不足竣工建筑的5%。至今,在我国城乡既有建筑约400亿平方米中(其中城市约140亿平方米),只有3.2亿平方米房屋是节能建筑,不到全国既有建筑的1%。
我国是一个能源短缺的国家,但我国单位建筑面积能耗目前却是发达国家的2至3倍。与发达国家相比,我国建筑钢材消耗高出10%至25%,每拌和1立方米混凝土要多消耗水泥80公斤;卫生洁具的耗水量高出30%以上,而污水回用率仅为发达国家的25%。此外,在我国人均耕地只有世界人均耕地1/3的情况下,实心黏土砖每年毁田12万亩。
我国的建筑能耗量约占全国总用能量的1/4,居耗能首位。近年来我国建筑业到了快速的发展,需要大量的建造和运行使用能源,尤其是建筑的采暖和空调耗能。据统计,1994年全国仅住宅建筑能耗在基本上不供热水的情况下为1.54×108t
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
煤,占当年全社会能源消耗总量12.27×109t标准煤的12.6%。目前每年城镇建筑仅采暖一项需要耗能1.3×108t标准煤,占全国能源消费总量的11.5%左右,占采暖区全社会能源消费的20%以上,在一些严寒地区,城镇建筑能耗高达当地社会能源消费的50%左右。与此同时,由于建筑供暖燃用大量煤炭等矿物能源,使周围的自然与生态环境不断恶化。
我国节能工作与发达国家相比起步较晚,能源浪费又十分严重。如我国的建筑采暖耗热量:外墙大体上为气候条件接近的发达国家的4~5倍,屋顶为2.5~5.5倍,外窗为1.5~2.2倍;门窗透气性为3~6倍;总耗能是3~4倍。
三、在发展节能技术中应采取的对策
1.优化建筑设计
建筑造型及围护结构形式对建筑物性能有决定性影响。直接的影响包括建筑物与外环境的换热量、自然通风状况和自然采光水平等。而这三方面涉及的内容将构成70%以上的建筑采暖通风空调能耗。不同的建筑设计形式会造成能耗的巨大差别。然而,建筑物是个复杂系统,各方面因素相互影响,很难简单地确定建筑设计的优劣。例如,加大外窗面积可改善自然采光,在冬季还可获得太阳能量,但冬季的夜间会增大热量消耗,同时夏季由于太阳辐射通过窗户进入室内使空调能耗增加。这就需要利用动态热模拟技术对不同的
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
进行详细的模拟测试和比较。
2.建筑围护结构材料和部品
开发新的建筑围护结构部件,以更好地满足保温、隔热、透光、通风等各种需求,甚至可根据变化了外界条件随时改变其物理性能,达到维持室内良好的物理环境同时降低能源消耗的目的。这是实现建筑节能的基础技术和产品。主要涉及的产品有:外墙保温和隔热、屋顶保温和隔热、热物理性能优异的外窗和玻璃幕墙、智能外遮阳装置以及基于相变材料的蓄热型围护结构和基于高分子吸湿材料的调湿型饰面材料。自上个世纪90年代起,我国自主研发和从国外吸收消化的外墙、屋顶保温隔热技术被慢慢的采用。尤其外墙外保温可通风装饰板、通风型屋顶产品、通风遮阳窗帘的使用,都大大提高产品的质量、降低建筑运行成本。
3.建筑中的可再生能源技术
可再生能源包括太阳能、风能、水能、生物质能、地热能、海洋能等多种形式。可再生能源日益受到重视。开发利用可再生能源世界能源是持续发展战略的重要组成部分。太阳能既是一次性能源又是可再生能源,资源丰富对环境无污染,是一种非常洁净的能源。应提倡在建筑中广泛应用。
4.其他方面还有很多包括:通风装置与排风热回收装置与各种泵技术。
四、小结
虽然,我国在这方面还存在许多问题,但只要我们提高认识,加强管理,那么不久的将来我国一定有望发展成为能源节约大国!
参考文献:
[1]龙惟定.我国的能源形势和建筑节能.第十一届全国空调技术信息网大会论文集.中国建筑工业出版社,2001,(05)
[2]龙惟定.国内建筑合理用能的现状及展望.能源工程,2001,(02)1-6
[3]贾怀东.开发节能住宅是企业进化的标志.城市开发,2007,(22)
[4]白胜芳.节约能源保护环境[N].中国建设报(中国建材),2003,(108)
[5]刘加平.建筑节能与建筑设计中的新能源的利用[J],能源工程,2001,(2):12-15
[6]朱伟.房屋建筑节能技术的几点措施[J],甘肃科技,2002,(2):37
[7]刘素萍.建筑节能与围护结构[J],工业建筑,2001,(7):6-7
摘要:4C/ID是提高复杂认知技能的方法。文章阐述了如何运用4C/ID对“算法设计与分析”课程进行教学改革,实践证明,该方法有效地提高了学生算法设计与分析的能力并且增加了考证通过率。
提供及时的、直接有效的信息。非再用性构成技能的获得取决于图式建构。图式建构是指把低水平的图式整合到高水平图式中,逐渐形成更加复杂的图式。复杂的图式有助于非再用性构成技能的获得。图式建构取决于归纳的程度。归纳的作用为:(1)创建新的图式;(2)调整已有图式,使之适合更广泛的事件。相应的信息呈现方式必须能为归纳所用。因此,必须要对知识精制化。精制化是指将新的知识整合到记忆中已有的认知结构。这个过程通过类比来实现。
复杂认知技能的获得是建立在整体任务实践的基础上。因此,训练策略的合成是形成复杂认知技能的关键。这个过程必须遵循以下原则:(1)在实践开始阶段,为再用性和非再用性构成技能提供需要的必备知识和支撑知识;(2)随着专长的提高,相应地减少知识的呈现,直至学习者能够独立地、在不需要帮助的情况下面对真实的问题。这时,学习者获得了复杂认知技能。
4结论
经过实践检验,4C/ID能有效提高复杂认知技能。应用4C/ID于“算法设计与分析”课程,效果体现在两方面:(1)解决问题的能力提高了。以前,答题是把算法从头到尾背过来的,算法常有缺漏或搞乱算法语句顺序。现在,答题内容以实践的经验体会居多,答对率提高了16%。(2)考证通过率提高了。“算法
设计与分析”是一门综合性的课程,算法设计与分析能力的提高深化了学生对“程序设计语言”、“数据结构”等课程的学习,考证通过率也增加了。4C/ID不尽人意之处在于要费很多时间去分析。所以,4C/ID一般和教学设计系统一起使用。
参考文献:
[1] DONALD E.KNUTH. 计算机程序设计艺术:基本算法[M]. 苏运霖,译.北京:国防工业出版社,2007.
[2] 教育部高等学校计算机科学与技术教学指导委员会. 高等学校计算机科学与技术专业实践教学体系与规范[M]. 北京:清华大学出版社,2008.
[3] Anany Levitin. 算法设计与分析基础[M]. 潘彦,译. 北京:清华大学出版社,2007.
[4] Jeroen J.G.Van Merrienboer,Paul A. Kirschner.Ten Steps to Complex Learning:A Systematic Approach to Four-component Instructional Design[M]. New Jersey:LAWRENCE ERLBAUM ASSOCIATES,2007.
[5] 罗伯特D.坦尼森,弗兰兹•肖特,诺伯特M.西尔,等. 教学设计的国际观:理论•研究•模型[M]. 任友群,裴新宁,译. 北京:教育科学出版社,2007.
Improve Complex Cognitive Skills on "Algorithms Design and Analysis" Course
LUO Yi-sheng
(Department of Technology Edu
浅述管理心理学应用软件
关键词:管理心理学;企业管理;软件开发;问题解决;案例
摘要:随着社会的不断发展,将心理学原理运用于企业管理已是一种必然,尤其是管理心理学与企业管理的结合也越发显得重要。而且在这个互联网飞速发展的时代,计算机已经深入到社会的各个领域,市面上已有许多企业业务管理及心理学方面的应用软件,但还没有专门将管理心理学与计算机软件技术结合起来的一款软件,于是我们大胆尝试开发一款管理心理学应用软件,帮助企业管理者处理公司内部员工之间、员工与上司之间的冲突,方便高效的学习管理心理学相关知识及简单快速的汲取企业成功管理案例的管理精华
一、引言
随着体制改革的深化,在宏观经济环境和微观经济主体的内在条件发生深刻变化的情况下,中小型企业面临的竞争对手日益强大和多样化,竞争变得尤为激烈,以人为本的理念,科学并且人性化的管理,强大的企业内聚力逐渐成为企业生存和发展的基础。20世纪70年代末期,我国工业部门需要运用心理学的知识调动企业管理人员和职工的积极性,心理学界也感到需要开展有关生产、有关生产管理中心理学问题的研究。正是在这种改革和开放的形势下,管理心理学才逐渐得到发展。随着社会的发展,人们开始运用心理学知识来管理企业,发展企业文化,提高企业的竞争力,将管理心理学原理与方法运用于企业已是一种必然。
在西方发达国家,从事人力资源管理的人员几乎都具有心理学的知识背景。随着国际化程度的增强,在中国企业中,员工不再只追求物质条件的满足,而是更注重自我价值的实现以及能在企业中得到归属感。尤其是中小型企业,将管理心理学的知识与企业管理相结合来管理员工已成为一种趋势。而且当前许多管理者也已经意识到心理学在管理中发挥的重要作用。因此许多管理者去参加心理学方面的相关培训,但是这些心理培训教育过程有可能流于形式,内容僵化,形式单一,花费许多时间和精力,效果不佳。寻求另外一种将企业管理和心理学相结合的方法已是必需。
此外,虽然现阶段管理软件有很多,特别是企业业务方面的管理软件已经做得很完善了,且虽然有不少心理学方面的软件,但其主要都是心理测试软件,并没有将企业管理和心理学相结合,专门为企业服务,管理员工心理问题的软件还没有出现。
基于上述的这些问题,我们大胆的尝试把管理心理学与计算机软件技术结合起来,研发一款管理心理学应用软件,供管理者使用,更好的管理企业,关注企业员工的心理状态,从而让员工更好的为企业服务,实现企业和员工的双赢。
二、软件功能
软件将管理心理学原理和方法与软件技术相结合,能系统性地为中小型企业的管理者提供管理心理学方面的帮助,通过心理学的角度协助管理者做好对人员的管理工作,充分调动和发挥全体人员的积极性,主动性和创造性,使人力资源和物质技术设备的潜力能最大限度的得到发挥,提高工作效率,产生最大的经济效益。总的来说,利用这个软件,企业管理者可以以科学又人性化的方法去辅导、培训、影响员工,解决员工与员工之间的问题,处理好员工与上级间的关系。
软件分为问题解决,管理策略,经典案例三个功能模块。在问题解决功能块,管理者可以通过输入公司员工的行为表现,轻松一点软件便能分析并给出相关的原因及解决方案建议;在管理策略功能块,将管理心理学的知识系统的整理出来,条理清晰,管理者可以直接的了解学习管理心理学方面的知识;在经典案例,相关视频功能块,管理者不用上网繁杂的搜索便能轻松的查看到一些管理成功的例子,从中汲取精华。
三、软件的关键点及难点
(一)将管理心理学内容系统化
学习管理心理学相关知识,进行归纳总结,将其系统化,形成整体的知识框架。
(二)不同人间的问题的建立和分析
通过书本、网络搜索、问卷调查等各种方式搜集企业中员工之间、员工与上司之间的问题表现形式,并对每一种问题表现形式运用管理心理学的知识及思维进行分析,总结出每一种现象的可能原因及对应的解决方案及建议。
(三)各种行为特征知识库的建立
根据分析结果,建立一个问题库、一个原因库和一个解决方案库。
(四)对用户提出的问题进行智能化分析,找到最佳解决方案
四、软件的核心功能模块
(一)问题解决模块
为系统建立了知识行为库,一个原因库和一个解决方案库。我们以现象为起点,对每个现象赋予一个关键字,由该关键字用编程实现查找原因库和问题解决方案库,最终调出原因和解决方案,将原因和解决方案显示给用户。
1.使用时,用户需要输入他/她想要找到原因和解决方案的现象的代表性关键词。那么,通过编程实现将该代表性词和数据库的关键字进行匹配。如果匹配成功,就显示出相应的原因和解决方案供用户查看;如果匹配失败则显示让用户再输入另外的代表性词,再进行匹配。
2.没有匹配成功的代表性词将会保持到数据库,供软件功能增加和修改时使用和参考。
(二)管理策略模块
管理者可以通过主界面跳转到该页面,查看整理好的管理心理学知识和策略及一些很好的管理建议。
(三)经典案例模块
主要分为两个功能模块:
1.经典案例的文字叙述。将用户输入的关键字和案例的文字段进行匹配,搜索出用户想要的案例。避免了使用传统的列表给出案例列表,使用户的操作变得麻烦。
2.一些视频材料。将一些企业管理成功的经典视频材料放入数据库,使用户可以方便直接快速的获得相关信息。
(四)扩充功能
在后期的工作中或者使用的过程中,可以根据实际情况的改变对软件的功能进行扩充。主要包括:知识行为库的完善、界面的美化、帮助的具体化和完整化、经典案例的更换和添加。
这些扩充主要可以通过修改数据库或者修改相关的代码实现,使该软件更加完整化,以便最大限度的满足用户的需求和实现开发该软件的最终目的。
五、系统实现
软件的实现分为后台数据库的建立以及前台应用程序的开发两部分。后台数据库采用SQL server2005,前台开发采用Microsoft Visual Studio 2008。
(一)数据库的设计
本软件的数据库分为静态数据库以及动态数据库两类。前者包括规则集,参数特征,上下文特征,表格,表等信息。后者是关于当前咨询的不断更新的记录。
(二)界面设计
使用Mircosoft Visual Studio 2008中Visual C#进行前台应用程序的开发,创建与用户交互的界面,然后在用数据库连接技术ODBC与数据库进行连接,根据数据库里面的规则创建子界面。以此类推,得到最终的所有界面,使用Visual C#语言进行相关代码的编写。
(三)连接数据库
实现管理心理学应用软件的界面与数据库“管理心理”的连接,其中用代码方式进行连接的核心代码如下:
SqlConnection con=new SqlConnection("server=localhost\\SQLEXPRESS;database=管理心理;Integrated Security=SSPI;");
SqlCommand com=new SqlCommand("select原因,解决方案from管理心理where关键字='"+key+"'",con);
(四)提取数据库中的内容
根据用户查询的问题,对数据库中的内容进行算法分析,然后提取用户需要的内容。
例如,在实现问题解决时,首先根据用户查询的问题,在行为特征库中找到相应的行为特征,然后根据用户输入的条件,对该行为特征相映的原因库和解决方案库中的数据进行统计分析,找到该行为特征最可能的原因和解决方案,从而解决用户的问题。
其核心代码如下:
flagsolution=false;
flagcause=false;
string cause=dr.GetValue(0) as string;
for(int i=0;i {
DataCause dc=mydataCause[i] as DataCause;
if(dc.Cause=cause)
{
dc.Causecount++;
flagcause=true;
break;
}
}
(五)测试
对软件进行预期功能测试,记录出现的问题并解决
参考文献:
[1]侯清富,郭岗软件工程师实战基本功[M].人民邮电出版社,2005
[2]曾长军.SQL Server数据库原理及应用[M].人民邮电出版社,2007
[3]周察金.数据库应用技术[M].电子科技大学出版社,2007
[4]廉茵.管理心理学[M].对外经济贸易大学出版社,2007
[5]俞文钊.管理心理学[M].东北财经大学出版社,2008
学习C语言中的指针类型
摘要:结合我院学生十年来参加全国计算机等级考试(C语言部分)情况,通过分析成绩分布与题型关系,我们发现指针方面的题型失分率最高。在此基础上结合教学实际,本文提出学习指针知识的方法和顺序过程,并将其应用在C程序设计课程教学中,取得了较好的实践效果。
关键词:等级考试;指针;指针类型;指针常量;指针变量;数组与指针;行指针;列指针
据统计,十年来我院有450多名学生先后参加了全国计算机等级考试。我们对C语言笔试和上机成绩分析发现,指针类型方面的题型出错率最高,占平均错误率的60%左右,这说明指针知识的学习是学生学习C语言的难点。指针类型是一种特别的数据类型,与C语言中其他数据类型相比,既抽象又复杂,同时有关C语言的教程类图书对指针论述的差别也给学生带来了困惑。根据笔者的经验,学生只有掌握了与指针类型相关的基础知识,才能较好地理解、掌握和应用指针数据类型。
1计算机内存储器地址的编码方法
欲学好指针类型,首先要知道计算机内存储器地址的编码方法。计算机内存储器里存储的信息都是由1和0构成的二进制数来表示,每一位二进制数位是表示信息的最小单位,计算机技术规定在内存储器里用八位二进制数位来存储信息,这八位二进制数位叫一个字节,即在内存储器里是以字节为单位存储信息的,如大写英文字母A,在内存储器里用01000001表示。把能表示八位二进制数的存储空间叫一个字节存储单元。
在实模式下“为了访问存储器的不同字节存储单元,每个字节存储单元人为给以一个编号,叫存储器的地址,地址从0开始编号,顺序地每次加1。”如PC计算机配置512MB内存条,其存储空间地址编号范围用十六进制数表示为00000000~3FFFFFFF,即十进制数的范围为:0~536870911,有536870912个字节存储单元,相当于可存放536870912个英文字符(半角字符)。配置1G内存条,其存储空间地址编号范围用十六进制数表示为00000000~7FFFFFFF,即十进制数的范围为:0~1073741823,有1073741824个字节存储单元,相当于可存放1073741824个英文字符(半角字符)[1]。
2存储单元的地址
C语言中数据有基本类型(字符型、整型、长整型、实型、枚举型)、构造类型、指针类型等。不同数据类型在内存中存储时,占用的字节数不同,如字符型需要1个字节空间,整型需要2个字节空间,长整型需要4个字节空间等。把不同数据类型存储时需要的N个字节看成一个整体,叫一个存储单元。对字符型N=1,整型N=2,长整型N=4等。对1个字节构成的存储单元,其字节单元地址编号就是该存储单元的地址,对多个(N>=2)字节构成的存储单元,其低字节单元地址为该存储单元的地址,也叫存储单元的首地址[1-2]。
3指针类型
语言中的指针类型有指针常量和指针变量。指针常量简称为指针,即存储单元的地址。可以认为配置不同容量的内存,其指针值的范围是不同的,但都是
作者简介:杨加义(1960-),男,高级讲师,研究方向为嵌入式系统、Matlab仿真技术、Matlab语言与学科教学。
从0起始的。每个存储单元的指针值都是固定不变的。指针变量就是用来存放指针的变量。指针变量是一种较特别的变量,它的值是一些特定的整数值,不是任何整数(如负整数)都可以存放到指针变量,指针变量与整数加减运算也不同于数学中的运算方法。指针变量也有自己的内存空间,空间的大小由编译器决定,在Turbo C 2.0下是2个字节,在Visual VC++下是4个字节[1,3]。
4变量的指针
在编译C语言程序时,要在内存为各种变量分配相应的存储单元,相应的变量名称对应着存储单元的首地址,这首地址就是变量的指针。可以将一变量的指针赋给一指针变量(存到指针变量代表的存储单元中),这时就说指针变量指向了该变量(也可以说指针变量指向了该变量表示的存储单元)。对存储单元的存取操作即可以用变量名,也可以通过指向该变量的指针变量来进行,这要用到指针运算符“*”[3]。
5指针变量类型和它所指向的数据类型
指针变量的类型以声明它时其前面的“*”为标志,无论指针变量指向何种数据类型,它所占用的内存空间大小是一定的(如2个字节),这与其他数据类型的变量所占有的内存空间大小一定一样,所以指针变量的类型就是指针类型,与它所指向的数据类型无关。有资料把可指向不同数据类型的指针变量说成有整型指针(int *)变量、实型指针(float *)变量、字符型指针(char *)变量等,笔者觉得没必要。如果非要这样说,理解成指针变量可指向什么数据类型变量就叫什么数据类型指针变量为好,如 int *p;的声明p可以指向整型变量,说p是整型指针变量为好。
声明指针变量时,还要声明允许指针变量指向的数据类型,这由声明指针变量时“*”前面的“基类型”决定。指针类型加减整数运算时移动的位置大小由指向的数据类型来决定。指向同一种数据类型的不同指针变量间可以进行加减或大小比较运算,指向不同数据类型的指针变量不能进行加减运算或大小比较运算。指针变量一旦被“基类型”声明可指向某种数据类型,就不能再指向其他别的数据类型。
指针类型中的指针变量还可进行自增自减运算,而指针不能。指针变量既可以是左值,也可以是右值,指针只能是右值。由指针、指针变量与运算符构成指针类型表达式。下面说的“&”作为单目运算符时与一个变量结合就构成指针表达式,如&a,&p等,而“*”作为单目运算符只可与指针类型结合,构成指针类型指向的数据类型表达式,如有:
int *p,a,b;
p=&a;
b=*p;
*p=10;
*&a=20;
其中“b=*p;”的*p就是整型表达式,也是一个整型变量,&a是指针类型表达式,*&a是一个整形表达式,也是一个整形变量。
对于指向指针变量的指针变量,还要复杂些[3]。
6 “&”和“*”运算符
C语言中有“&:按位与运算符,是双目运算符,结合性是由左到右”和“&:取地址运算符,是单目运算符,结合性是由右到左”,有“*:乘法运算符,是双目运算符,结合性是由左到右”和“*:指针运算符,是单目运算符,结合性是由右到左(“*”在声明指针变量时也用到了)”。
对于取地址运算符&只能与一个变量结合构成指针类型表达式,如有变量name,则&name就得到变量name的指针。
对于指针运算符*,意义是“取其指向的内容”,这里说“取其指向的内容”不是指存储单元里存放的值,而是表示指针变量指向的变量。在有的书中说“例如:&a为变量a的地址,*p为指针变量p所指向的存储单元的内容(即p所指向的变量的值)[1]”,这种说法值得商榷。笔者认为用“*p代表指针变量p所指向的存储单元(即p所指向的变量)”的说法比较合适,更直接说 *p是一个变量,因为*p可以是左值。如下代码:
void main()
{int a,*p;
p=&a;
*p=10;
printf("%d,%d\n",a,*p);
*&a=20;}
输出a和*p的结果都为10,说明*p与a等价。通过 *&a= 20;语句还可以改变a的值,也说明 *&a与a等价,*&a可以是左值[4]。