① 为啥要学c语言
基础的话什么都不用。往深学需要英语 主要为了看外文书籍和代码注释。还需要数据结构和操作系统的知识。当然要想写出一段高效的代码 还需要离散数学,计算机算法的知识。
程序员之路——如何学习C语言并精通C语言
程序员之路——如何学习C语言
学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C语言是本文的主题。请注意,即使是“最小的代价”,也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着需要经历艰苦的过程。
一、要读就读好书,否则不如不读
所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,还可以再次选择。
大名鼎鼎的谭浩强教授出了一本《C语言程序设计》,据说发行量有超过400万,据我所知,很多学校都会推荐这本书作为C语言课本。虽然本人的名字(谭浩宇)跟教授仅仅一字之差,但是无比坚定地黑他这本书的。这本书不是写给计算机专业的学生的,而是给那些需要考计算机等级考试的其它专业学生看的。这本书的主要缺点是:例子程序非常不专业,不能教给程序设计应该掌握的思考方式;程序风格相当地不好,会养成乱写代码的恶习;
Kernighan和Ritchie的《The C ProgrammingLanguage》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。另外,即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。《C语言参考手册》就是《CReferenceManual》,是C语言标准的详细描述,包括绝大多数C标准库函数的细节,算得上是最好的标准C语言的工具书。顺便提一句,最新的《C程序设计语言》是
根据C89标准修订的,而《C语言参考手册》描述的是C99标准,二者可能会有些出入,建议按照C99标准学习。还有一本《C和指针》,写得也是相当地不错,英文名是《Pointers onC》,特别地强调指针的重要性,算是本书的一个特点吧。不过这本书并不十分适合初学者,如果曾经学过C语言,有那么一些C语言的基础但又不是很扎实,那么可以尝试一下这本书。相信,只要理解了指针,C语言便不再神秘。
如果已经啃完了一本C语言教材,想要更进一步,那么有两本书一定要看。首先是《C Traps andPitfalls》(中译名《C陷井与缺陷》),很薄的一本小册子,内容非常非常地有趣。要注意一点,这本书是二十多年前写成的,里面提到的很多C语言的缺陷都已被改进,不过能够了解一些历史也不是什么坏事。然后可以挑战一下《Expert CProgramming》(中译名《C专家编程》),书如其名,这本书颇具难度,一旦仔细读完并能透彻理解,便可以放心大胆地在简历上写“精通C语言”了。
切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果看不懂,那一定是缺失了某些必需基础知识。此时,要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。
二、Unix/Linux还是Windows,这是个很大的问题
不同的编程环境会造就出不同思维的程序员。Windows的程序员大多依赖集成开发环境,比如VisualStudio,而Unix程序员更加钟爱Makefile与控制台。显而易见,集成开发环境更容易上手,在Windows上学习C语言,只需要会按几个基
本的Visutal C++工具栏按钮就可以开始写Hello,
World!了,而在Unix下,需要一些控制台操作的基本知识。有人也许认为Unix的环境更简洁,但习惯的力量是很大的,大家都很熟悉Windows的基本操作,而为了学习C语言去专门装一个Unix系统,似乎有点不划算。
对于一个只懂得Windows基本操作、连DOS是什么都不知道的新手而言,尽快做一些有趣而有意义的事情才是最重要的。用C语言写一个小程序远比学习
ls、cat等命令有趣,况且要专注于C语言本身,就不得不暂时忽略一些东西,比如编译链接的过程、Makefile的写法等等等等。
所以建议初学者应该以Visual C++ 6.0(不是VisualC++ .NET)或者DevC++作为主要的学习环境,而且千万不要在IDE的使用技巧上过多纠缠,因为今后一定要转向Unix环境的。Visual C++6.0使用很方便,调试也很直观,但其默认的编译器对C标准的支持并不好,而DevC++使用gcc编译器,对C99的标准都支持良好。使用顺带提一下,很多大学的C语言课程还在使用Turbo C2.0作为实验环境,这是相当不可取的,原因其一是TC 2.0对C标准几乎没有支持,其二是TC2.0编译得到的程序是16位的,这对今后理解32位的程序会造成极大的困扰(当然,用djgpp之类的东西可以使TC2.0编译出32位程序,不过那过于复杂了)。
等学完一本C语言的教材,一定要转向Unix平台继续学习,几乎所有的C语言高级教程都是基于Unix平台的(比如《C专家编程》)。转变的过程是痛
苦的,需要面对的是各种纷繁复杂的命令,完全不同于Windows平台的思考方式,但是这种痛苦是值得的。Unix与C是共生的,Unix的思考方式和习惯更加符合C语言的思考方式和习惯。在Unix下,可以找到无数优秀的源代码供你尽情阅读,可以方便地查看某个库函数的联机手册,还可以看到最优秀的代码风格
归结起来就是一句话:初学C语言,建议使用Windows系统和集成开发环境,在准备向“高手”方向努力时,请先转向Unix平台。
三、万事俱备,就是东风
书已选定,环境配置完成,正所谓万事俱备,只欠自己的努力了。请从书的前言开始,仔细地阅读手头的教材,很多人看书喜欢直接从第一章开始看,这是错误的做法。前言是作者对整本书的大体介绍,作者一般会告诉需要什么基础才能够顺利阅读本书,这可以帮助你检验自己的基础知识是否已经具备。看完前言,还要浏览一下目录,了解一下书的整体结构,顺便给自己安排一下学习计划。
学习C语言,必需注意每一个细节,书上的例子代码一定要自己亲自敲一遍,编译执行输出都跟书上说的一致才能算是学完了一个例子,如果不一致,就要仔细找原因。出了书本上有的例子,自己还要“创造”一些例子,比如学习运算符优先级的时候,可以写几个相同的表达式,在不同的位置加上括号,看看有哪些不同的行为,比如*p++和(*p)++,又比如a = b == c、(a = b) == c和a = (b ==c)等等。自己抄的书上的例子以及改造之后的例子,还有自己“创造”的例子,都应该仔细地归类保存,并且要在源代码中写上简短的注释,阐述这个例子的意图。
例子之后就是习题了,建议初学者把所有的习题都独立做一遍,然后对照答案的代码,看看自己的代码有那些不足,再试着修改自己的代码。很多人不重视习题,这是极大的错误,因为作者通常会在习题中说明一些重要的道理,而不是单纯地检验前面的知识。
也许认为这样学习太慢,其实不然。学得细致就不用走回头路,等学到后面才发现自己前面没搞清楚,那才是真的得不偿失。一般说来,整本书读完,应该完数千行乃至上万行的代码,无论是原封不动照抄书上的,还是自己心血来潮写就的,都是今后继续学习的一笔财富。以自己举例,阅读《Windows核心编程》时(只阅读了3/4的内容),除了抄书上的代码,还自己写了很多例子,一共有5574行(用unix下的wc工具统计),时隔多日,早已记不清Windows的系统编程了,但只要花几分钟翻出以前的代码看看,便会重新了然于胸。所谓好记性不如烂笔头,就是这个道理。
仔细读书、认真抄写源代码、独立完成习题外加更进一步的实验,最后将所有的代码留下,成为自己的经验和财富,绝对的辛苦,也绝对的事半功倍。当然,这种方式只适合学习需要精通的技术,如果不是学习C语言,还要具体情况具体分析。
② 大学生为什么要学习C语言
C语言是计算机编程最基础的语言之一,学习难度简单,使用面最广,通用性也很强,学会C语言再去学别的也很容易
除了计算机编程其它的开发、设计中也会用到一些基础知识,比如字,字节,有的可能会用到if语句,for循环等等
③ 为什么大学都要学C语言
很高兴为您解答!
c语言是学习其他语言的基础
如果后续要学的专业有其他语言的话,那么大一都要先学c语言
不是所有专业都学c语言
④ 为什么现在的大学都是学C语言,C++,C#,但是真正毕业生缺很少有人从事这些,反而是Java的多
直接学实用的java或python,你以后的编程武力值只能达到%90,很难达到巅峰。
精通C/C++语言后,其它语言基本一看就懂,上手非常快。
另外一个原因,学校的东西比较次后于实际应用,毕竟社会竞争强烈,学校只要是名校,即使不那么跟上潮流,其他学校短时间也很难撼动,导致学校之间竞争不够激烈,另外开展一门新学科也很不容易,需要人才,往往人才都进入社会赚钱去了。
⑤ 为什么先学C语言
谁说的?学JAVA可以直接进入的,什么C是面向过程的,面向过程不就是流程么?学了C的人,知道先起床的刷牙,没学过C的人难道会以为先刷牙,后起床呀。流程就是顺序。
如果你真想学好JAVA,直接进入更好,这样更有利于你直接接受面向对象的含义,不要停留在面向过程里面。当然,如果能理解面对对象的意义,对面向过程又能分析得很严谨那就更完美了。
什么C是基础,C只要学的不是太深,同其它语言相比,最多就是多个指针,上层编程要那么多指针做什么?害怕你的程序会把你2G内存占光呀,如果实在想了解指针,还是学下微机原理或是单片机这类会更明白,当然那些低层的也只有C才 能胜任了。
如果我告诉你学任何编程语言最重要学英语,你说对么?这才相当于拼音对汉字,学好英语,各个函数的意义,包括手册都超简单,那学任何编程语言那速度肯定够快。
⑥ 大学为什么要学c语言
C++语言是一种应用较广的面向对象的程序设计语言,使用它可以实现面向对象的程序设计。面向对象的设计与面向过程的设计是有很大区别的,面向对象的程序设计是在面向过程的程序设计的基础上一个质的飞跃。要学会面向对象的程序设计,首先要学会一种面向对象的语言,即要学会用VC编程,就要先有C++的基础,而学习C++语言首先要认识它面向对象的特性和实现面向对象的方法。
C++是一种面向对象的程序设计语言
当你首次学习C++时,总会碰到一些在C语言从未见过的概念,如:类、对象、抽象、封装、继承、多态性、虚函数等等。这些概念是C++所具有,下面简单的介绍一下C++对面向对象程序设计方法的支持和实现。
1、C++支持数据封装
支持数据封装就是支持数据抽象。在C++中,类是支持数据封装的工具,对象则是数据封装的实现。面向过程的程序设计方法与面向对象的程序设计方法在对待数据和函数关系上是不同的,在面向对象的程序设计中,将数据和对该数据进行合法操作的函数封装在一起作为一个类的定义,数据将被隐藏在封装体中,该封装体通过操作接口与外界交换信息。对象被说明具有一个给定类的变量,类类似于C语言中的结构,在C语言中可以定义结构,但这种结构中包含数据,而不包含函数。C++中的类是数据和函数的封装体。在C++中,结构可作为一种特殊的类,它虽然可以包含函数,但是它没有私有或保护的成员。
2、C++类中包含私有、公有和保护成员
C++类中可定义三种不同访控制权限的成员。一种是私有(Private)成员,只有在类中说明的函数才能访问该类的私有成员,而在该类外的函数不可以访问私有成员;另一种是公有(Public)成员,类外面也可访问公有成员,成为该类的接口;还有一种是保护(Protected)成员,这种成员只有该类的派生类可以访问,其余的在这个类外不能访问。
3、C++中通过发关消息来处理对象
C++中是通过向对象发关消息来处理对象的,每个对象根据所接收到的消息的性质来决定需要采取的行动,以响应这个消息。响应这些消息是一系列的方法,方法是在类定义中使用函数来定义的,使用一种类似于函数调用的机制把消息发送到一个对象上。
4、C++中允许友元破坏封装性
类中的私有成员一般是不允许该类外面的任何函数访问的,但是友元便可打破这条禁令,它可以访问该类的私有成员(包含数据成员和成员函数)。友元可以是在类外定义的函数,也可以是在类外定义的整个类,前者称友元函数,后者称为友元类。友元打破了类的封装性,它是C++另一个面向对象的重要牲。
5、C++允许函数名和运算符重载
C++支持多态性,C++允许一个相同的标识符或运算符代表多个不同实现的函数,这就称标识符或运算符的重载,用户可以根据需要定义标识符重载或运算符重载。
6、C++支持继承性
C++中可以允许单继承和多继承。一个类可以根据需要生成派生类。派生类继承了基类的所有方法,另外派生类自身还可以定义所需要的不包含在父类中的新方法。一个子类的每个对象包含有从父类那里继承来的数据成员以及自己所特有的数据成员。
7、C++支持动态联编
C++中可以定义虚函数,通过定义虚函数来支持动态联编。
以上是所讲的是C++对面向对象程序设计中的一些主要特征的支持。
C++的词法及词法规则
1、C++的字符集
字符是一些可以区分的最小符号。C++的字符集由大小写英文字母(a-z和A-Z)、数据字符(0-9)、特殊字符(空格,!,#,%,^,&,*,_,<,>,?,\,,)组成。
2、单词及词法规则
单词又称词法记号,它是由若干个字符组成的具有一定意义的最小词法单元。C++共有6种单词,分别是:标识符、关键字、运算符、分隔符、常量、注释符,在编码时要特别注意这些单词的词法规则。要注意的是C++中的空白符:C++中经常使用空白符,实际上,空白符不是一个字符,它是空格符、换行符和水平制表符的统称。注意,空白符不等于空格符,只是空白符包含空格符。还有一个空字符,要把它与空白符分开。空字符是指ASCII码值为0的那个字符。空字符在C++中有特殊用途,用它来作为字符串的结束符。存放在内存中的字符串常量都在最后有一个结束符,即用空字符,它用转义序列方法表示为’\0’。
C++程序结构的组成
C++程序结构的基本组成部分
1 预处理命令,C++提供了三类预处理命令:宏定义命令、文件包含命令、条件编译命令。
2 输入输出,C++程序中总是少不了输入和输出的语句,实现与程序内部的信息交流。特别是屏幕输出的功能,几乎每个程序都要用到,使用它把计算机的结果显示在屏幕上。
3 函数,C++的程序是由若干个文件组成的,每个文件又是由若干个函数组成,因此,可以认为C++的程序就是函数串,即由若干个函数组成,函数与函数之间是相对的,并且是并行的,函数之间可以调用。在组成一个程序的若干个函中,必须有一个main()。
4 语句,语句是组成程序的基本单元。函数是由若干条语句组成的。但是,空函数是没有语句的。语句是由单词组成,单词间用空格符分隔,C++程序中的语句又是以以分号结束。语句除了有表达式语句和空语句之外,还有复合语句、分支语句、循环语句和转向语句等若干类。
5 变量,多数程序都需要说明和使用变量。广义讲,对象包含了变量,即将变量也称为一种对象,狭义讲,将对象看作是类的实例,对象是指某个类的对象。
6 其他,除了以上讲述的5个部分以外,还有其他组成部分。例如,符号常量和注释信息也是程序的一部分。C++中都尽量把常量定义为符号常量,在C++的程序中出现的是符号常量,该符号常量代表着某个确定的常量值。
C++程序的书写格式
在编程时应该注意C++的书写格式,基本原则是:一行一般写一条语句。短语句可以一行写多个。长语句可以一条写多行。分行原则是不能将一个单词分开。用双引号引用的一个字符串也最好不分开,如果一定要分开,有的编译系统要求在行尾加续行符(“\”)
C++程序的实现
C++源程序的实现与其他高级语言源程序实现的原理是一样的。一般都要经过编辑、编译、运行。其中最要的是编译过程,C++是以编译方式实现的高级语言。C++程序的实现,必须要使用某种C++语言的编译器对程序进行编译。编译器的功能是将程序的源代码转换成为机器代码的形式,称为目标代码;然后,再使目标代码进行连接,生成可执行文件。该过程可分为三个子过程:预处理过程、编译过程(词法分析、语法分析、符号表、错误处理程序、生成目标代码)、连接过程。
Visual C++ 6.0版本是当前国内比较流行的一种C++编译系统。
⑦ 为什么编程入门要学C语言
现在都是信息化的时代,没有一门好的技术是难以在社会之中立足的,
现在的电脑技术飞速增长,每家公司都需要电脑人才,你可以去学习电脑专业,
在这个领域中还是有很大的发展空间的,只要自己好好学习,以后的前景不可限量。
⑧ 编程 为什么要先学C语言
C即C语言,可以从很多个角度来回答: 1.C是面向过程的语言.他的执行都是由上而下的瀑布式的.而现在流行的面向对象(例如JAVA.C++)的执行顺序并 不是写程序的人可以控制的.它是由某些动作来调用的 2.C是中级语言.一般我们认为汇编叫做低级语言.因为它直接提供了对硬件的操作.功能十分强大.效率也十分 的高.但是想完全使用汇编来写一个应用几乎是完全不可能的事情.并且汇编语言需要硬件的支持.也就是说 你针对自己的机器写的汇编到别人的机器上未必就能跑的起来.而高级语言指的就是是用类似人类语言的语 言来表达的。比如JAVA.BASIC.PASCL等.这些语言与硬件之间的关系不大.通用性很强.开发应用程序效率比较 起低级语言来说要高很多。因为C提供了一种叫做指针的东西.可以直接操作系统的内存地址.这个功能是其 他高级语言所没有的.所以人们习惯把C叫做中级语言.意思就是说既有高级语言类似人类语言的特点.又有汇 编的可以直接操作硬件的功能.
⑨ 为什么很多专业都要学习 C 语言,大学生都要会编程吗
大学理工科学生都要学C语言。学到的程度:至少是二级。C语言简介:C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。