c语言学到了循环后要学的东西还多吗

2025-01-31 21:53:53
推荐回答(5个)
回答1:

C语言的灵魂(之一)是指针。没学会指针,就没学会C语言。
一般实用的算法语言(无论是不是类C的,静态类型检查的,动态的)都有循环语法。原因之一是循环太基础了。
老实说,LZ如果是一般的人类,看一般的教材,只是学到循环的话,至少需要另外花5倍的时间继续纸上谈兵。当然更好的学习方法是在学习语法知识的同时试图熟悉标准库、阅读源代码和实现自己的程序,但是这需要很强的理解力。同时,因为很难平衡精力分配,所以学习效果因人而异。另外,敢拿老谭的书当教材……LZ你确定你有绝对自信不会被误导么……= =
C++是从C语言发展而来的。Java在语言层面去除了一些C++容易误用的部分,加上了一些其它特性,但是其实并不怎么样(也并非我个人感觉)。C的许多运算符和基本表达式和C++/Java/C#等类C语言是共通的,但这些部分在语言中也只是一小部分内容而已(当然,比循环语法多点)。另外,关于Java语言本身,因为历史包袱太重,每次升级的改进都不大,而语言自身的限制和库依赖性又很严重,很难说以后的发展前途会怎么样(国内这方面是滞后的,现在开始学的话问题不大)。作为平台的JVM则要成功得多。是学Java、学C#还是各种语言都学,LZ现在虽然不用决定,但是迟早要面临这个问题。
不过,说到底,语言只是工具而已。如果要学“软件技术”,重点是学会利用语言来解决问题(通用领域内的和某些特定领域内的)的一般方法(也不是某些人所谓的“面向对象”之类的有限几个卖弄了十几年的范型,具体方法的威力都是有限的)。剩下的内容和若是和具体项目相关,几乎都是临时学习、消化资料来实现的,无法提前预知。至于数据结构和算法,通用、基础的部分(例如复杂度分析理论的应用,编码语言无关的数据结构表示方法,排序算法的分类等等)对于软件设计人员是常识,而具体的部分,如果不打算成为这方面的专家(基本上就是数学家),完全不需要掌握(当然,应该有搜索这方面资料和快速学习算法实现的能力)。
由于我朝国情,中国的大学计算机教育基本上都是浮云,培养出来的学生(包括某些大学里的老师)不见得比一些培训机构出来的更具有竞争力。所以LZ说的“大学里学不好就完了”,完全是误解。
----
嘛,LS几位的有些回复挺有意思的……
“指针这东西没啥用,基本淘汰”——笑而不语……
“C语言没什么实用的,它不面向对象编程的,很多东西它做不了的,也没有人性话,搞搞譬如驱动程序什么的。C++还差不多。”——不行了,肚子疼……
“是这样的,你学号c之后,学别的都方便,因为逻辑相通,只是表示符号不一样而已”——说的是很堂皇,可惜不现实。C和平台的关联性还是相当严重的,尽管实现平台非常多,也有标准,但做到平台无关的代价很大。也因为如此,学习过程中不断地会受到语言和平台杂交的概念的误导。例如,C语言本身并没有“地址”的概念(这个是计算机组成原理等基础课程中讨论的),但有什么C语言教材能不讨论C语言实现相关的“地址”?此外,还可能使原本应该被理解的部分没有被掌握。譬如说,LS几位学了C语言以后,能明确什么叫做“语义”“对象(不是面向对象说的那个)”“左值属性”“编译期”……这些细碎的基本概念在C语言中怎么体现么?
“学软件技术,不知是不是软件工程,软件工程其实学的最多的是java,C++这些面向对象的语言。”——错误。软件工程学作为工程学,完全不学语言。语言的掌握是学习这门课程的前提基础。顺便,再次重申,C++(至少近十几年来)不是(纯粹)面向对象的语言,尽管它可以使用面向对象的设计范型。Java是面向对象的……保留意见。
“java的数据定义的方式,运算符以及构建函数(java叫method)的方式等一些面向过程编程的部分,这些与C几乎完全一样。java最精华的面向对象的思想是不会在C中出现的 ”——注意,method的提法本身暗示语义是和类相关的,已经不是面向过程的范畴讨论的了。另外,数据定义的“方式”是和具体语言无关的,也不在面向过程编程或者其它任何程序设计范型的讨论范围之内。
----
↑2010-6-30 10:02
----
“软件工程不学语言的话,你的意思是大学招来的大一新生上来就讲软件的工程学方法,讲数据流图,ER图,需求分析,风险评估等等。”
↑两个“软件工程”不是指同一个东西。你说的是专业,我说的是本来的含义,指一门学科,所以前面有提到“作为工程学”,也因此强调,这些基础课程内容的一定程度的了解是学习软件工程本身的前提,而不是软件工程课程本身的授课内容。像C++、Java这样的语言类的课程一般是独立的,ER图等在数据库基础等课程讲,都不会再软件工程中讲。而软件工程专业确实一般都包含相关的基础课程。
--
完全的废话,c++兼容C,既然C不是面向对象的语言,C++当然不纯粹是。
↑又一个想当然的流行的错误想法。C作为语言,没有强调面向对象,但不代表C不可以面向对象。参考GObject。其实我只是要指出,面向对象和语言没必然的关系,虽然历史上因为面向对象的流行而使语言的设计者给C++加上了class机制。
你怎么知道一定要面对这个问题
↑你怎么知道可以不面对这个问题,难道替LZ决定了么...从事解决问题的领域都没确定,语言之类的具体技术当然也不确定了。不错,C具有相当广的适用范围,在很多方面目前而言也是不可替代的,但C也不是万能的,数值计算什么的用C就不怎么样。另外,拿使用人数来说事,算不算狭隘呢?
====
[原创回答团]

回答2:

循环是基础,基本上所有的各种编程语言都有for循环,其中for循环几乎通吃各种语言。
主要还有:

数组;函数;结构体;文件操作,和指针。

指针相对难一些,但指针这东西没啥用,基本淘汰。
后面就是学好函数和结构体,数组就是另外一中变量而已了,你学个1维数组和2维数组就可以。三维的或是更多维的就算了,没啥用。

C语言就是锻炼你一个编程的思维,以后学其它的语言相对可以提高。
C语言没什么实用的,它不面向对象编程的,很多东西它做不了的,也没有人性话,搞搞譬如驱动程序什么的。C++还差不多。

三国鼎立:C语言,C++,java,你真得有用的是java与C++,但C++比较难。
学好c语言对学java其实帮助并不大,几乎很小的帮助,可以这样说。
你想掌握java的话,光那c语言的水准,java是行不通的。

c语言对学c++有帮助,但对java真的没啥大用。

回答3:

C最核心的当然是指针,别的学任何一个程序设计语言都要学,另外,循环后面还要学数组,机构体等数据结构方面的内容
学软件技术,不知是不是软件工程,软件工程其实学的最多的是java,C++这些面向对象的语言。这些语言开发效率更高,但C更接近底层,尤其是指针,必须对数据的存储方式有所了解

学好C后对java有一定帮助,但只局限于java中照搬C的部分,比如你学到的循环结构,java的数据定义的方式,运算符以及构建函数(java叫method)的方式等一些面向过程编程的部分,这些与C几乎完全一样。java最精华的面向对象的思想是不会在C中出现的

楼上的看法本人不敢苟同。

"软件工程学作为工程学,完全不学语言。"

不知楼上哪个学校毕业的,软件工程不学语言的话,你的意思是大学招来的大一新生上来就讲软件的工程学方法,讲数据流图,ER图,需求分析,风险评估等等。不讲java,不讲c++,不讲C,拿什么去讲软件工程,拿什么作示例,听的明白吗?难道这些都靠自学。——至少本人所在学校的软院要学一学期java的。还有一学期的C++选修……你以为是在招研究生吗?都有非常好的语言基础。

我承认“数据定义的方式”表述不正确,
另外,我并没有在面向过程中讨论method,我的意思是,method与C中的函数构建的方法相似,仅此而已。

”C++(至少近十几年来)不是(纯粹)面向对象的语言,“
完全的废话,c++兼容C,既然C不是面向对象的语言,C++当然不纯粹是。

”是学Java、学C#还是各种语言都学,LZ现在虽然不用决定,但是迟早要面临这个问题。“

你怎么知道一定要面对这个问题,C的使用人数至今在全球还排在第二位,C++第三位。java确实很流行,不错。但是,C在很多领域都是具有统治地位的,比如说单片机(单片微型计算机)编程,至今还没见过java,C++的影。在与硬件联系紧密的领域C还是统治者。楼上对软件的理解过于狭隘了。

回答4:

循环后面还有,函数调用,数组,指针,以及基于C语言的数据结构,之后就是算法,,以后还有越来越多有趣的东西

总的来说,,语言永远是工具,,,算法才是灵魂,,这是我的一个师兄告诉我的,,不管你学什么语言,,算法都是最重要的

回答5:

C是学习软件最最基本的东西,学好C以后,学java、c#、C++、数据结构等等才会上手,不过不用怕,既然已经学到了循环,那么以后的东西好接受了就,像是,指针、数组,都相当重要,好好学吧,这专业学好了有出路!