2008-2009学年(上)期中心小学期中考试质量分析.doc_第1页
2008-2009学年(上)期中心小学期中考试质量分析.doc_第2页
2008-2009学年(上)期中心小学期中考试质量分析.doc_第3页
2008-2009学年(上)期中心小学期中考试质量分析.doc_第4页
2008-2009学年(上)期中心小学期中考试质量分析.doc_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2009-2010学年(下)期期中考试质量分析在中心校的统一安排下,我校于4月22日进行期考试。考后各教师在认真即时阅卷的基础上,进行了成绩的统计,并针对考试中出现的问题较全面地进行了质量分析。从测试的情况分析我校的教学质量整体比上学期有所上升。为更好的在下半学期提高我校教学质量,在各教师分析的基础上,对全校的教学质量做出如下汇总分析:一、语文学科1、从低年级到高年级教师普遍提到学生的阅读不过关,学生的书写不够工整,一至三年级的阅读不过关原因是学生的背书不过关,四至六年级则是学生的阅读理解能力差,原因是学生平时的语言积累不够丰富。2、学生的字词积累不够,中高年级的学生表现为作文水平不高,而低年级则是表现为学生不能规范的书写字词。二、数学学科1、在数学学科中低年级教师反映学生的计算速度和计算正确性不高,学生在平时的学习中不能够把教师教学的知识进行内化,要使这些学生把教师教学的知识进行内化,教师要从很低的层次辅导起,耗费教师大量精力与时间。真的不掉线吗?、?2、一至六年级教师普遍反映学生解决实际问题的能力较弱,在这方面失分较多。三、英语学科1、英汉互译错误较多,部分学生对单词的掌握不够牢固。其中四年级、六年级老师反应较为严重,一定要在平时的教学中加强学生对单词的背诵。2、三年级和五年级这两个年级相对较好。从三门学科来看,教师普遍反映出学生的基础知识掌握不够扎实,语文的字词、数学的计算都存在一定的问题,其它如语文的阅读写作、数学中的解决问题、英语中的听力、词汇。这些问题的出现,原因是多方面的,不仅只是教师造成的,而是既有学生的,也有家庭的。从教师的角度出发,为提高教学质量还应做好以下的工作:一、加强教学研究,用新的教学理念指导平时的教学,在课堂中多采取自主合作,探索交流的方式进行教学,促进学生思维的发展,提高学生解决问题的能力,提高课堂效率。在教学时间有限的情况下,只有应用多种教学手段,在教学中应用多种教具,提高课堂效率,在课堂上进行扎实训练,夯实基础,才能提高质量。二 、进一步作好“五认真”工作。把“五认真”工作落到了实处,特别是作业这一块落到实处,学生就能够掌握住基本的知识,成绩就不会太差真的不掉线吗?、?三、对后进生应采取多管齐下的方式进行教育。有些学生成绩差原因是多方面的,提高这些学生的成绩,应从培养学生的学习习惯、形成良好家庭教育环境、加上教师耐心细致的辅导等才有一定的效果。四、 语文学科在低年级中应做好学生的字词的书写掌握,为高年级的语文教学打好基础,并且教师要加强学生对课文的诵读。高年级教师除了要做好字词的训练外,还应重点训练学生的阅读写作。五、 数学学科应加强基础知识的教学,重点做好后进生个别辅导,减少低分人数,提高班级的整体教学水平。在新教材中应多用自主合作,探索交流的方式进行教学。六、英语学科中应在课堂教学中多组织活动,让学生进行听、说、读写的训练。课后应严格督促学生对单词、词汇句型的背诵记忆提高学生的英语成绩。以上是我校对半学期教学工作的一个简要的总结。相信有全体教师正确认识和努力工作,有上级领导关心支持,我校教学质量在下半学期会有大的提高。中心小学2009年11月20日真的不掉线吗?、?小学期中考试质量分析为深入了解半学期以来我校教育教学工作开展情况,学校于11月15至16日组织对一至六年级的语,数及英语,科学进行了测试,至目前为止,测试的各项工作已经完成,现将本次测试结果及质量分析如下:一. 测试成绩统计语文学科班级平均分优秀率及格率班级平均分优秀率及格率一78.85191四80.36693二8064.894五70.825.780三71.683978六73.429.497.1数学学科班级平均分优秀率及格率班级平均分优秀率及格率一9080100四84.970.795.1二858597五76.35171三847397六86.956582英语学科班级平均分优秀率及格率班级平均分优秀率及格率三85.695.6100五78.57182四85.47093六745276从成绩统计的结果可以看出,我校教学质量有了较大的提高,低年级基本不存在不及格现象,优秀率有了较大的提高;但同时也反映出学科之间.年级之间成绩差距较大,发展不平衡.如科学和英语成绩低于语文和数学成绩,高年级成绩低于低年级成绩。同时个别班级、个别科目的优秀率低于10。二. 卷面分析真的不掉线吗?、?(一)语文学科:本次各年级测试试卷内容较全面,分别涉及字,词,句.段等.A、掌握较好的方面:1本次语文考试注重汉字的书写,体现在三到六年级分别考核对一段话或一句话的抄写,要求规范,整洁,在这一题上大部分学生能按要求进行书写,得分率较高.2.得分率较高的还有看拼音写词语,这与教师平常要求多读多写密不可分.3.另外走进课文,按课文填空,学生掌握较好,大部分与教师要求背诵的课文有关.B、失分较多的方面1. 由于方言的原因造成的错误,主要体现在低年级的拼音填写上,如you yong 部分学生写成you ying ,这样就要求教师在课堂上要使用普通话。2. 从低年级到高年级教师普遍提到学生的阅读不过关,分析能力较差,一至三年级的阅读不过关原因是学生的背书不过关,四至六年级则是学生的阅读理解,分析能力差,原因是学生平时不注重课文句段的分析与理解,只是靠教师的讲解或借助使用参考书,从而导致平时的语言积累不够丰富。3. 学生的字词积累不够,如五年级考核填写适当的成语,歇后语,谚语等,部分学生就无从下手,同时还体现在高年级的学生作文水平不高,而低年级则是表现为学生不能规范的书写字词,字词掌握的不够牢固。C、下一步教学的工作与建议1. 教师应当改进识字的教学方法,加强基础知识的训练。2. 教学每一篇课文,应当作一次阅读训练来要求学生,教师要根据教学教会学生读的同时要让学生理解和应用所学的知识,教师要在每一堂课中,适当加入拓展训练,开拓学生的创造思维。3. 教师应当根据学生的年龄特点改进作文教学方法,先让学生对写作感兴趣,进一步积累词汇,要让学生有话可说。(二)数学学科A、整体情况1. 基本概念,基本公式掌握较好,反映在填空题的解答上,正确率均在90以上。2. 大部分教师能把握住数学的特点,加强计算的教学,学生因计算丢失的分不多,真的不掉线吗?、?但中高年级对脱式计算的运算顺序及简便规律的使用上也还存在的一些问题。3. 操作题完成较好。除个别同学因不理解题意或作图不精确外,绝大部分学生能正确作图。4. 应用题分析能力较以前有进步,大部分学生能正确列式,但有些同学失分失在计算上;部分学生书写数量关系上错误较多。B、几点建议1. 加强数理的教学,例如小数和小数部分是两个概念,2. 加强学生的计算能力,这里需要注意的是,平时有部分学生使用计算器进行计算,我们平时只是应该教会学生使用计算器,了解其功能,并不提倡作业中使用。3. 加强生活与数学的联系,培养学生分析解决实际问题的能力。4. 数学课堂也要提倡学生口头表达的能力,加强训练说数学,有助于增强学生学数学的信心和分析能力。(三)英语学科A、整体情况英语学科考核两大部分,听力和笔试。1. 从各英语教师的分析来看,听力部分得分率都在90以上,失分的原因在于平时听的太少,尤其是听录音的时间太少。2. 笔试部分,翻译词组,交际语匹配和选词填空失分较多,失分率均在60以上。失分的原因在于学过的课文,单词并不理解其意思。B、几点建议1. 倡导“读”英语,“说”英语,“用”英语,让学生在使用对话中掌握对话,不能仅满足于学生会读,会背。2. 加强“听”英语的练习,多接触录音。(四)科学学科A、整体情况1. 填空题的得分率较高,均在90以上。失分的地方要么是术语记忆错误,要么就是字词写错。2. 判断题,选择题完成较好。3. 简答题得分率不高,原因是部分同学不理解题意,或对一些实验的过程不熟悉。B、几点建议1. 科学中的理论是很抽象的,有些不是靠讲解就能领会的,有的时候必须理论联系实践,多观察多实验。2. 强调科学概念的背诵。真的不掉线吗?、?出国留学人员俄语强化之精简版 入境处在什么地方? ?请帮我填一下出入境单好吗? ? 我没有什么应该申报纳税的东西. , 请给一份海关申报表.能帮我填一下吗? ? ? 请问我所带的东西要缴税吗?缴多少? , ? ? 请问有没有地铁交通图? , ? 请给我一张公交线路图. . 这趟车是不是去这个地方? ? 我要一张周票/一日票. / . 真的不掉线吗?、?单程票 双程票 我要预订票,到. . 我想更换航班. 我想把这张票换成商务舱. . 这附近有机场巴士站吗? ? 能指一下路吗? , ? 坐几路公交车能到? ? 公交站在哪里?可以带我过去吗? ? , 我要买机票到. . 我要经济舱的票. . 我什么时候办理登机手续? ? 我要坐在飞机前部. . 我要一个靠窗的座位. 这件行李我可以带上飞机吗? 真的不掉线吗?、? ? 这件行李我不托运. . 小心,它容易破碎. , 超额行李费多少钱? ? 我该走哪个通道? ? 请问登机门是几号?在哪里? , ? ? 请问什么时候登机? C , , ? 班机诞误多长时间? ? 请问转机柜台怎么走? , , ? 请问转机班机什么时候起飞? , , ? 请问我的转机卡丢了怎么办? , , ? 请问提领行李区怎么走? , , ? 真的不掉线吗?、?请你帮我找我的行李好吗? ? 我要买卧式的火车票. 我要搭快车,不是慢车? 这趟火车几点开?是不是开往? ? .? 请问餐车在那里? , -? 我应该在哪里补票? ? 我要补票. . 我要去码头乘船. , . 我要买船票到 . 请问我的舱位在哪里? , ? 我要租车. 租金是多少钱? ? 租金里面包含了保险吗? ? 真的不掉线吗?、?要保全险. . 请问租车要交押金吗?交多少? , , ? ? 你可以帮我打电话到这家酒店预订吗? , ? 我想住在附近. . 我想住在市中心. . 我想住火车站附近. . 你可以带我去吗? ? 你能帮我把地址写下来吗? ? 你好,我要办住宿. , ? 我预定了房间. 你能帮我填住房登记表吗? ? 住一个晚上 真的不掉线吗?、?标准单人房 . 标准双人房 . 我要双人床. . 房费多少?包括早餐在内吗? ? ? 预付多少钱? 你们接受信用卡付款吗? ? 请问这里收美元吗? , ? 请你给我几张酒店名片. 请帮我拿一下行李. , 请问是几号房?可以带我过去吗? , ? , 我把钥匙忘在房间里了,可以帮我打开门吗? . ? 请问可以再给我两条毛巾吗? ?真的不掉线吗?、? 请问可以再给我一床被子吗? 我想换一张床单. . 有免费的日用品吗? ? 请问房间里有免费的饮用水吗? , , ? 能不能给我提供热水? ? 衣服可以送洗吗? ? 请问什么时候可以收取送洗的衣服? , , ? 有没有我能用的烫斗? ? 我要加床.要加钱吗? . ? 淋浴器坏了. 卫生间坏了. 窗户破了. 真的不掉线吗?、?没电. 洗手间里没有厕纸. . 卫生间的下水道堵住了. 我想要一些打电话用的硬币? , 我想打一个国际电话. 我要复印文件. . 我想参加地方旅游团. 请问你们可以介绍一些行程吗? , ? 我的行程改了,恐怕要提早一天退房. . . 我是搭晚上的飞机,可以晚一点退房可以吗? . ? . 我现在要退房,多少钱? , ? 真的不掉线吗?、?从研究生二年纪开始学习计算机也差不多两年了,一路走来,有很多的收获,也有不少的遗憾,现在正好有一段闲暇,就想对走过的路留下一些足迹,回忆。每个人都有自己不同的人生,说到这里,就是程序人生了,歌德在浮士德中说过:“如果不曾在悲哀中咀嚼过面包,不曾在哭泣中等待过明天,这样的人就不知道你天的力量。”所以我想记下一些带给我悲哀,带给我哭泣的程序人生。其实学习计算机的基础课程是非常重要的,离散数学,编译原理,操作系统,形式语言,如果你认真走过了这些路,在以后的日子你会发现你的路会越走越宽,以前的努力和汗水会不断的给你灵感,给你支持,给你前进的武器和勇气。你会发现以后取得的很多成就,不过是朝花夕拾而已! 对于程序语言我喜欢的是C+,它能带给你别的语言无法给予你的无上的智力快感,当然也会给你一门语言所能给你的魔鬼般的折磨。其实Java,C#,Python语言也非常的不错,我也极为喜欢。它们都是非常成功的语言,我从来就不愿意做某一种语言的盲目信仰者,每种语言都有它成功的地方,失败的地方,都有它适合的地方,不如意的地方。所以每一次看到评价语言的文章,我看看,但从来不会发言。C+的前世是C,而且C所留下的神秘以及精简在C+中是青出于蓝而胜于蓝!C所带给人的困惑以及灵活太多,即使一个有几年经验的高段C程序员仍然有可能在C语言的小水沟里翻船。不过其实C语言真的不难,下面我想指出C语言中最神秘而又诡谲多变的四个地方,它们也继续在C+语言中变幻莫测。指针,数组,类型的识别,参数可变的函数。一指针。它的本质是地址的类型。在许多语言中根本就没有这个概念。但是它却正是C灵活,高效,在面向过程的时代所向披靡的原因所在。因为C的内存模型基本上对应了现在von Neumann(冯诺伊曼)计算机的机器模型,很好的达到了对机器的映射。不过有些人似乎永远也不能理解指针【注1】。注1:Joel Spolsky就是这样认为的,他认为对指针的理解是一种aptitude,不是通过训练就可以达到的http:/.joelonsoftware./pr . /fog0000000073.html指针可以指向值、数组、函数,当然它也可以作为值使用。看下面的几个例子:int* p;/p是一个指针,指向一个整数int* p;/p是一个指针,它指向第二个指针,然后指向一个整数int (*pa)3;/pa是一个指针,指向一个拥有3个整数的数组int (*pf)();/pf是一个指向函数的指针,这个函数返回一个整数后面第四节我会详细讲解标识符(identifier)类型的识别。1.指针本身的类型是什么?先看下面的例子:int a;/a的类型是什么?对,把a去掉就可以了。因此上面的4个声明语句中的指针本身的类型为:int* int*int (*)3真的不掉线吗?、?int (*)()它们都是复合类型,也就是类型与类型结合而成的类型。意义分别如下:point to int(指向一个整数的指针)pointer to pointer to int(指向一个指向整数的指针的指针)pointer to array of 3 ints(指向一个拥有三个整数的数组的指针)pointer to function of parameter is void and return value is int (指向一个函数的指针,这个函数参数为空,返回值为整数)2.指针所指物的类型是什么?很简单,指针本身的类型去掉 “*”号就可以了,分别如下:intint*int ()3int ()()3和4有点怪,不是吗?请擦亮你的眼睛,在那个用来把“*”号包住的“()”是多余的,所以:int ()3就是int 3(一个拥有三个整数的数组)int ()()就是int ()(一个函数,参数为空,返回值为整数)【注2】注2:一个小小的提醒,第二个“()”是一个运算符,名字叫函数调用运算符(function call operator)。3.指针的算术运算。请再次记住:指针不是一个简单的类型,它是一个和指针所指物的类型复合的类型。因此,它的算术运算与之(指针所指物的类型)密切相关。int a8;int* p = a;int* q = p + 3;p+;指针的加减并不是指针本身的二进制表示加减,要记住,指针是一个元素的地址,它每加一次,就指向下一个元素。所以:int* q = p + 3;/q指向从p开始的第三个整数。p+;/p指向下一个整数。double* pd;/某些计算之后double* pother = pd 2;/pother指向从pd倒数第二个double数。4.指针本身的大小。在一个现代典型的32位机器上【注3】,机器的内存模型大概是这样的,想象一下,内存空间就像一个连续的房间群。每一个房间的大小是一个字节(一般是二进制8位)。有些东西大小是一个字节(比如char),一个房间就把它给安置了;但有些东西大小是几个字节(比如double就是8个字节,int就是4个字节,我说的是典型的32位),所以它就需要几个房间才能安置。注3:什么叫32位?就是机器CPU一次处理的数据宽度是32位,机器的寄存器容量是32位,机器的数据,内存地址总线是32位。当然还有一些细节,但大致就是这样。16位,64位,128位可以以此类推。这些房间都应该有编号(也就是地址),32位的机器内存地址空间当然也是32位,所以房真的不掉线吗?、?间的每一个编号都用32位的二进制数来编码【注4】。请记住指针也可以作为值使用,作为值的时候,它也必须被安置在房间中(存储在内存中),那么指向一个值的指针需要一个地址大小来存储,即32位,4个字节,4个房间来存储。注4:在我们平常用到的32位机器上,绝少有将32位真实内存地址空间全用完的(232 4G),即使是服务器也不例外。现代的操作系统一般会实现32位的虚拟地址空间,这样可以方便运用程序的编制。关于虚拟地址(线性地址)和真实地址的区别以及实现,可以参考Linux源代码情景分析的第二章存储管理,在互联网上关于这个主题的文章汗牛充栋,你也可以google一下。但请注意,在C+中指向对象成员的指针(pointer to member data or member function)的大小不一定是4个字节。为此我专门编制了一些程序,发现在我的两个编译器(VC7.1.3088和Dev-C+)上,指向对象成员的指针的大小没有定值,但都是4的倍数。不同的编译器还有不同的值。对于一般的普通类(class),指向对象成员的指针大小一般为4,但在引入多重虚拟继承以及虚拟函数的时候,指向对象成员的指针会增大,不论是指向成员数据,还是成员函数。【注5】。注5:在Andrei Alexandrescu的Modern C+ Design的5.13节Page124中提到,成员函数指针实际上是带标记的(tagged)unions,它们可以对付多重虚拟继承以及虚拟函数,书上说成员函数指针大小是16,但我的实践告诉我这个结果不对,而且具体编译器实现也不同。一直很想看看GCC的源代码,但由于旁骛太多,而且心不静,本身难度也比较高(这个倒是不害怕_),只有留待以后了。还有一点,对一个类的static member来说,指向它的指针只是普通的函数指针,不是pointer to class member,所以它的大小是4。5.指针运算符&和*它们是一对相反的操作,&取得一个东西的地址(也就是指针),*得到一个地址里放的东西。这个东西可以是值(对象)、函数、数组、类成员(class member)。其实很简单,房间里面居住着一个人,&操作只能针对人,取得房间号码;*操作只能针对房间,取得房间里的人。参照指针本身的类型以及指针所指物的类型很好理解。小结:其实你只要真正理解了1,2,就相当于掌握了指针的牛鼻子。后面的就不难了,指针的各种变化和C语言中其它普通类型的变化都差不多(比如各种转型)。二数组。在C语言中,对于数组你只需要理解三件事。1C语言中有且只有一维数组。所谓的n维数组只是一个称呼,一种方便的记法,都是使用一维数组来仿真的。C语言中数组的元素可以是任何类型的东西,特别的是数组作为元素也可以。所以int a345就应该这样理解:a是一个拥有3个元素的数组,其中每个元素是一个拥有4个元素的数组,进一步其中每个元素是拥有5个整数元素的数组。是不是很简单!数组a的内存模型你应该很容易就想出来了,不是吗?:)2数组的元素个数,必须作为整数常量在编译阶段就求出来。int i;int a;/不合法,编译不会通过。也许有人会奇怪char str = “test”;没有指定元素个数为什么也能通过,因为编译器可以根据后面的初始化字符串在编译阶段求出来,真的不掉线吗?、?不信你试试这个:int a;编译器无法推断,所以会判错说“array size missing in a”之类的信息。不过在最新的C99标准中实现了变长数组【注6】注6:如果你是一个好奇心很强烈的人,就像我一样,那么可以查看C99标准。3对于数组,可以获得数组第一个(即下标为0)元素的地址(也就是指针),从数组名获得。比如int a5; int* p = a;这里p就得到了数组元素a0的地址。其余对于数组的各种操作,其实都是对于指针的相应操作。比如a3其实就是*(a+3)的简单写法,由于*(a+3)=*(3+a),所以在某些程序的代码中你会看到类似3a的这种奇怪表达式,现在你知道了,它就是a3的别名。还有一种奇怪的表达式类似a-1,现在你也明白了,它就是*(a-1)【注7】。注7:你肯定是一个很负责任的人,而且也知道自己到底在干什么。你难道不是吗?:)所以你一定也知道,做一件事是要付出成本的,当然也应该获得多于成本的回报。我很喜欢经济学,经济学的一个基础就是做什么事情都是要花成本的,即使你什么事情也不做。时间成本,金钱成本,机会成本,健康成本可以这样说,经济学的根本目的就是用最小的成本获得最大的回报。所以我们在自己的程序中最好避免这种邪恶的写法,不要让自己一时的智力过剩带来以后自己和他人长时间的痛苦。用韦小宝的一句话来说:“赔本的生意老子是不干的!”但是对邪恶的了解是非常必要的,这样当我们真正遇到邪恶的时候,可以免受它对心灵的困扰!对于指向同一个数组不同元素的指针,它们可以做减法,比如int* p = q+i;p-q的结果就是这两个指针之间的元素个数。i可以是负数。但是请记住:对指向不同的数组元素的指针,这样的做法是无用而且邪恶的!对于所谓的n维数组,比如int a23;你可以得到数组第一个元素的地址a和它的大小。*(a+0)(也即a0或者*a)就是第一个元素,它又是一个数组int3,继续取得它的第一个元素,*(*(a+0)+0)(也即a00或者*(*a)),也即第一个整数(第一行第一列的第一个整数)。如果采用这种表达式,就非常的笨拙,所以a00记法上的简便就非常的有用了!简单明了!对于数组,你只能取用在数组有效范围内的元素和元素地址,不过最后一个元素的下一个元素的地址是个例外。它可以被用来方便数组的各种计算,特别是比较运算。但显然,它所指向的内容是不能拿来使用和改变的!关于数组本身大概就这么多,下面简要说一下数组和指针的关系。它们的关系非常暧昧,有时候可以交替使用。比如 int main(int args, char* argv)中,其实参数列表中的char* argv就是char* argv的另一种写法。因为在C语言中,一个数组是不能作为函数引数(argument)【注8】直接传递的。因为那样非常的损失效率,而这点违背了C语言设计时的基本理念作为一门高效的系统设计语言。注8:这里我没有使用函数实参这个大陆术语,而是运用了台湾术语,它们都是argument这个英文术语的翻译,但在很多地方中文的实参用的并不恰当,非常的勉强,而引数表示被引用的数,很形象,也很好理解。很快你就可以像我一样适应引数而不是实参。dereferance,也就是*运算符操作。我也用的是提领,而不是解引用。我认为你一定智勇双全:既有宽容的智慧,也有面对新事物的勇气!你不愿意承认吗?:)所以在函数参数列表(parameter list)中的数组形式的参数声明,只是为了方便程序员的阅真的不掉线吗?、?读!比如上面的char* argv就可以很容易的想到是对一个char*字符串数组进行操作,其实质是传递的char*字符串数组的首元素的地址(指针)。其它的元素当然可以由这个指针的加法间接提领(dereferance)【参考注8】得到!从而也就间接得到了整个数组。但是数组和指针还是有区别的,比如在一个文件中有下面的定义:char myname = “wuaihua”;而在另一个文件中有下列声明:extern char* myname;它们互相是并不认识的,尽管你的本义是这样希望的。它们对内存空间的使用方式不同【注9】。对于char myname = “wuaihua”如下mynamewuaihua0对于char* myname;如下表myname|/wuaihua0注9:可以参考Andrew Konig的C陷阱与缺陷4.5节。改变的方法就是使它们一致就可以了。char myname = “wuaihua”;extern char myname;或者char* myname = “wuaihua”;/C+中最好换成const char* myname = “wuaihua”。extern char* myname;C之诡谲(下)三类型的识别。基本类型的识别非常简单:int a;/a的类型是achar* p;/p的类型是char*真的不掉线吗?、?那么请你看看下面几个:int* (*a5)(int, char*); /1void (*b10) (void (*)(); /2doube(*)() (*pa)9; /3如果你是第一次看到这种类型声明的时候,我想肯定跟我的感觉一样,就如晴天霹雳,五雷轰顶,头昏目眩,一头张牙舞爪的狰狞怪兽扑面而来。不要紧(Take it easy)!我们慢慢来收拾这几个面目可憎的纸老虎!1C语言中函数声明和数组声明。函数声明一般是这样int fun(int,double);对应函数指针(pointer to function)的声明是这样:int (*pf)(int,double),你必须习惯。可以这样使用:pf = &fun;/赋值(assignment)操作(*pf)(5, 8.9);/函数调用操作也请注意,C语言本身提供了一种简写方式如下:pf = fun;/ 赋值(assignment)操作pf(5, 8.9);/ 函数调用操作不过我本人不是很喜欢这种简写,它对初学者带来了比较多的迷惑。数组声明一般是这样int a5;对于数组指针(pointer to array)的声明是这样:int (*pa)5; 你也必须习惯。可以这样使用:pa = &a;/ 赋值(assignment)操作int i = (*pa)2/将a2赋值给i;2.有了上面的基础,我们就可以对付开头的三只纸老虎了!:)这个时候你需要复习一下各种运算符的优先顺序和结合顺序了,顺便找本书看看就够了。1:int* (*a5)(int, char*);首先看到标识符名a,“”优先级大于“*”,a与“5”先结合。所以a是一个数组,这个数组有5个元素,每一个元素都是一个指针,指针指向“(int, char*)”,对,指向一个函数,函数参数是“int, char*”,返回值是“int*”。完毕,我们干掉了第一个纸老虎。:)2:void (*b10) (void (*)();b是一个数组,这个数组有10个元素,每一个元素都是一个指针,指针指向一个函数,函数参数是“void (*)()”【注10】,返回值是“void”。完毕!注10:这个参数又是一个指针,指向一个函数,函数参数为空,返回值是“void”。3. doube(*)() (*pa)9; pa是一个指针,指针指向一个数组,这个数组有9个元素,每一个元素都是“doube(*)()”【也即一个指针,指向一个函数,函数参数为空,返回值是“double”】。现在是不是觉得要认识它们是易如反掌,工欲善其事,必先利其器!我们对这种表达方式熟悉之后,就可以用“typedef”来简化这种类型声明。1:int* (*a5)(int, char*);typedef int* (*PF)(int, char*);/PF是一个类型别名【注11】。PF a5;/跟int* (*a5)(int, char*);的效果一样!注11:很多初学者只知道typedef char* pchar;但是对于typedef的其它用法不太了解。Stephen Blaha对typedef用法做过一个总结:“建立一个类型别名的方法很简单,在传统的变量声明表达式里用类型名替代变量名,然后把关键字typedef加在该语句的开头”。可以真的不掉线吗?、?参看程序员杂志2001.3期C+高手技巧20招。 2:void (*b10) (void (*)();typedef void (*pfv)();typedef void (*pf_taking_pfv)(pfv);pf_taking_pfv b10; /跟void (*b10) (void (*)();的效果一样!3. doube(*)() (*pa)9; typedef double(*PF)();typedef PF (*PA)9;PA pa; /跟doube(*)() (*pa)9;的效果一样!3.const和volatile在类型声明中的位置在这里我只说const,volatile是一样的【注12】!注12:顾名思义,volatile修饰的量就是很容易变化,不稳定的量,它可能被其它线程,操作系统,硬件等等在未知的时间改变,所以它被存储在内存中,每次取用它的时候都只能在内存中去读取,它不能被编译器优化放在内部寄存器中。类型声明中const用来修饰一个常量,我们一般这样使用:const在前面const int;/int是constconst char*;/char是constchar* const;/*(指针)是constconst char* const;/char和*都是const对初学者,const char*;和 char* const;是容易混淆的。这需要时间的历练让你习惯它。上面的声明有一个对等的写法:const在后面int const;/int是constchar const*;/char是constchar* const;/*(指针)是constchar const* const;/char和*都是const第一次你可能不会习惯,但新事物如果是好的,我们为什么要拒绝它呢?:)const在后面有两个好处:A const所修饰的类型是正好在它前面的那一个。如果这个好处还不能让你动心的话,那请看下一个!B 我们很多时候会用到typedef的类型别名定义。比如typedef char* pchar,如果用const来修饰的话,当const在前面的时候,就是const pchar,你会以为它就是const char* ,但是你错了,它的真实含义是char* const。是不是让你大吃一惊!但如果你采用const在后面的写法,意义就怎么也不会变,不信你试试!不过,在真实项目中的命名一致性更重要。你应该在两种情况下都能适应,并能自如的转换,公司习惯,商业利润不论在什么时候都应该优先考虑!不过在开始一个新项目的时候,你可以考虑优先使用const在后面的习惯用法。四参数可变的函数C语言中有一种很奇怪的参数“”,它主要用在引数(argument)个数不定的函数中,最常见的就是printf函数。printf(“Enjoy yourself everyday!n”);printf(“The value is %d!n”, value);真的不掉线吗?、?你想过它是怎么实现的吗?1. printf为什么叫printf?不管是看什么,我总是一个喜欢刨根问底的人

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论