5068教学资源网 > 技能教学 > 职业技能 > Python教程 > C语言学习攻略是什么

C语言学习攻略是什么

舒淇0分享

关于C语言学习攻略是什么

C语言作为最流行的程序设计语言,是任何一个计算机专业及其爱好者们都必须掌握的一门编程语言。下面小编为大家带来C语言学习攻略是什么,欢迎大家参考阅读,希望能够帮助到大家!

C语言学习攻略是什么

一、C语言学习中存在的问题

(一)基础薄弱,无法适应

C语言学习的课程通常安排在大一,这个时候,学生们刚刚进入高校这个新环境,经过高考后的长达3个月的“放羊”,学生们在学习方面的兴趣有所回落,而且新的学习习惯还未养成,因此,对于一门完全陌生的学科,肯定是无法好好适应的。虽然C语言是计算机编程类的最基础的入门课程,但是,对于学生而言,它属于一个全新的领域,学生们不知道该如何去学习,特别是在进行上机实验的时候,就显得更加不知所措。用C语言编程的时候,要求百分百的正确率,否则,就“差之毫厘,失之千里”,编写的程序无法正常运行,学生们容易产生挫败感,从而降低学习C语言的热情。

(二)课时少,学习压力大

由于C语言对于很多非计算机专业的学生来说,只是一门公共基础课,因此,安排的课时相对较少,这样导致教师在每节课的讲授内容就非常大,学生的学习压力非常大。特别是在刚开始学习C语言的时候,都是些理论知识和语法知识,面对枯燥的理论和大量需要记忆的繁琐的语法知识,学生很难在短期内消化吸收,需要一个过程,而现有的课时安排不够的情况下,使得学生每节课的学习压力增大,一旦前面的内容没有完全掌握,对于后面的学习就无法跟上,从而使得学生会对其产生厌烦心理。

(三)学习方法不当,学习效率低下

面对这样一个新的学科,要想学好,学习方法是十分重要的。而对于经历了长期的应试教育磨练的大学新生们来说,学习的知识都只是为了应付考试,而不知道真正的如何去学以致用。而学习C语言的`最终目的,就是为了编程,反过来说,能够证明学好了C语言的唯一方式就是能够编写出优秀的程序。初学者们在学习之初,带着过去传统的学习方法来进行C语言的学习,注重语法的记忆,可是,到了上机实践的时候,连最简单的模仿都不能做好,就更不用说自己自主设计编写程序了。

二、改进C 语言学习的措施

(一)选择好的学习工具

“工欲善其事,必先利其器。”初学者在学习之初,一定要选择最好的学习工具。学校配备的教材不一定是业界公认最优秀的,因此,学生们可以去请老师推荐,或是通过网络查找,配备一两本被业界认可的最好的入门书籍。另外,在实践方面,选择的编程工具也要是最合适的,现在被普遍广泛使用的是Visual C++ 6.0。

(二)使用好的学习方法

学习的过程都是一个循序渐进的,因此,我们要针对不同的学习阶段使用不同的学习方法。

具体而言,在初期阶段,即刚开始接触C语言的阶段,我们一定要了解它,正所谓“知己知彼,百战不殆”。首先,我们需要对C语言的来龙去脉有非常细致的了解,我们得知道它是怎么产生,经历了怎样的发展阶段,它的主要贡献是什么,它对科学的发展有什么帮助,我们学习它会有哪些好处,学习它的难点在哪,怎样学习才更加高效。在有了这些全方位的了解之后,我们就要让自己喜欢上C语言,要让自己从内心深处渴望学习C语言,那么如何才能做到呢?这就需要培养对C语言的兴趣。“兴趣是最好的老师”,一旦让自己对C语言产生了浓厚的兴趣,在正式学习阶段,我们就有了更强的动力。从心理学角度来看,人们通常对一些很有意思或很有作用的东西产生兴趣,因此,我们就需要去发掘C语言的有意思的地方和有作用的地方。C语言本身虽然看似枯燥,但它有着神奇的魔力,我们使用C语言的时候,虽然是一系列复杂的代码,但确能给我们变出我们想要的程序,通过这些程序,能够给我们带来巨大的便利。其实,教师在教学过程中,也会在这一方面下很大功夫,例如,教师会在教学过程中,现场演示一些比较简单而且很有趣味的小程序,使学生产生羡慕之情,使学生萌发出自己也要试一试的想法,从而“引诱”学生主动积极学习。对于学生来讲,在课堂上,一定要和老师形成良好的互动,要明确老师的教学方法和教学策略,并很好的与之配合。

在中期阶段,即正式学习阶段,这一阶段,最好的学习方法就是模仿――依葫芦画瓢,这也是教师在课堂教学中最常用到的。教师通过挑选一些最经典的例题,然后对其全方位解读,包括问题的产生、问题的分析、方案的设计、方案的实施以及最后问题的解决。通过这种全方位的示范之后,教师再给出相似的例题,让学生自己进行解决。这种教学方法也是非常好的一种自学方法,学生自己可以进行反复的模拟练习,从而掌握对某一类型的问题的解决方法。学生通过这种自己模仿的方法,不断提高自己的能力,而且让自己在解决问题的过程中,增强了自信,从而提升自己的学习兴趣。当然,单纯的模仿肯定是不够的,特别是在上机实验的时候,容易出现一些无法通过模范解决的问题,这个时候就需要耐心细致的进行比对,要善于发现问题所在,不能因为遇到困难就退缩,要积极进取,主动寻找解决问题的方法。

后期阶段,即学习展示阶段,通过对C语言的学习之后,老师也要检验自己的教学成果,学生要检验自己的学习成果。对于这种实践操作型的学科,是非常容易检验成果的。当然,检验的目的不仅仅是看学的效果,更加重要的在于发现学生的不足之处,从而进行改进。检验的方式也有很多,但是“任务驱动法”是最值得提倡的,通过用任务帮助学生们运用所学的知识去解决实际问题,实现从理论到实际应用的跨越。

(三)培养学生自学能力,打造良好学习环境

大学所需要培养的最重要的能力之一就是自学能力,在如今的信息爆炸时代,知识的更新速度是非常惊人的,因此,我们需要掌握自学的能力,从而帮助自己随时进行知识的更新。前文提到过,现在的大学课堂里,C语言的学习课时有限,因此,学生们需要在课外花功夫,而且C语言属于一个实践工具,要想灵活运用其编写实用程序,必须经过大量的课外编程实践。为了培养良好的自学习惯,可以建立学习兴趣小组,小组成员之间互相帮助,互相监督。在小组中,可以自己开展一些编程项目,大家一起分析问题,解决问题,这样更加能够培养学生的学习兴趣。

三、小结

C语言是计算机学习的一门重要的基础课程,也是各专业解决问题的重要工具,因此,学生们都需要很好地将其掌握,希望学生在今后的学习中,选择好的学习工具,改善学习方法,加大自主学习力度,真正培养对C语言的学习兴趣。

C语言基础知识

1.C语言中,变量必须先声明后使用,即一个程序块(花括号对)中所有临时变量必须在第一条可执行语句之前全部声明,而不能像C++那样随用随声明;

2.C语言中参数传值传递形参,即为参数的拷贝,此与C++/JAVA相同,同时值得注意,ANSI C不支持引用,此与C++/JAVA有区别,那么要对参数进行修改只能使用指针方式(指针传值指针本身仍是形参,要修改指针本身那必须使用双重指针);

3.C语言默认类型为int,即参数无类型或函数无返回值类型声明,则认为是int(貌似一些编译器不支持),同时不建议使用该特性;

4.无参数的函数声明应当使用void表明,否则C语言按照老式声明方法忽略参数类型检查;

5.全局变量建议全大写,局部变量建议全小写,内部变量31个字符有效,外部变量不区分大小写,仅6个字符有效,所以必须保持唯一性;

6.ANSI C是按照多字节实现的,UNICODE是后来发展的,所以有char/WCHAR,与.NET中char直接是双字节有区别,在C#中导入dll时值得注意;

7.C语言支持枚举,并且枚举和int直接强制类型转换即可,比.NET方便;

8.#define声明宏定义直接在编译时替换,不进行类型检查,const声明常量则可以进行类型检查;

9.运算符的优先级记忆比较麻烦,还是()可靠;

10.goto并不是一无是处,在不考虑程序可读性的情况下可能获得更高的效率;

11.函数实际也可以与特殊的类型相对应,那样对于理解函数指针比较方便,函数为外部类型;

12.static用于全局变量和函数则限定该变量和函数的使用范围仅为该源文件(从而无需考虑与其他源文件不得重名),用于函数内部变量则该变量的内存分配和回收不再同于普通临时变量(调用函数生成,函数返回销毁),而是一直存在于静态变量区,从而可以保存一些状态;

13.头文件的作用体现在调用其他源文件时不需要再次写函数定义,所以实现函数是不需要头文件的,调用时才需要,可以采用富头文件定义一大组接口,然后使用多个源文件分别实现;

14.寄存器变量使用register声明,仅适用于使用频率高的局部变量(含形参)(受限于底层硬件,不一定会被分配到寄存器,但是这么写不影响效率);

15.全局变量和静态变量默认初始化为全零且仅初始化一次,局部变量默认初始化为未定义且每次都会重新初始化;

16.递归调用的方法一般比较紧凑,但是每次调用会单独维护调用的堆栈,所以效率不是最高;

17.#include的作用体现于将一些内容避免重新写一遍(主要是类型、函数和外部变量定义),所以实际上不一定为h文件;

18.表示一行尚未结束,对于定义长的字符串和define比较有用;

19.函数调用的执行顺序不确定,所以对于a()+b()这样函数中使用相同变量并且改变其值的需要借助临时变量处理,防止不同实现的调用顺序不一致;

20.##用于宏定义中连接前后两个部分,如cat(a, b)   a ## b;

21.指针是C/C++的'重要内容,当然也是双面刃,用好了很方便而且高效,用不好那就造成程序不稳定;

22.使用va_list, va_start, va_arg, va_end来定义可变参数的函数,通过va_start函数中的第一个不变参数将va_list指向参数列表(函数调用的栈中),然后通过va_arg获取每个参数并将va_list移动指定类型的长度,最后则通过va_end完成必要的回收工作,需要指出的是va_arg没有结束边界,所以比较有效的方式有两种,一种对于参数类型一致,则可以第一个参数指出后续参数的总数,然后依次获取,另一种对于不同类型的参数混用,则可以通过类型标识+参数配对的方式进行使用(第一个参数依然可以指定数量,当然也可以检查标识),从而避免最后读取无效的参数,对于可变参数仅支持int和double两种类型(参数未限定类型,故按照旧式声明理解)以及指针类型;

23.函数指针是用来在C语言中实现动态调用的比较有效的方式

24.结构体用作参数依然是拷贝为形参传递,这点与JAVA中全部对象都是类有区别(类的对象通过引用传值,C#支持struct),所以对于大的结构体事宜使用指针传递,而对于小的结构体拷贝传值效率并不低;

25.代码中字符数组为静态常量,对其操作无效,程序块中数组的声明是可以自动回收的,通过malloc/calloc分配的内存为堆内存,需要自行通过free回收;

C语言的优点和缺点

C语言的优点

1.简洁紧凑、灵活方便

C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C语言可以象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。

2.运算符丰富

C的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富,表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。

3.数据结构丰富

C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等,能用来实现各种复杂的数据类型的运算,并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能,支持多种显示器和驱动器,且计算功能、逻辑判断功能强大。

4.C是结构式语言

结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

5.C语法限制不太严格,程序设计自由度大

虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。

6.C语言允许直接访问物理地址,可以直接对硬件进行操作

因此既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。

7.C语言程序生成代码质量高,程序执行效率高

一般只比汇编程序生成的目标代码效率低10へ20%。

8.C语言适用范围大,可移植性好

C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型。

C语言的缺点

1.C语言的缺点主要是表现在数据的封装性上,这一点使得C在数据的安全性上做的有很大缺陷,这也是C和C++的一大区别。

2.C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。

    711779