c语言什么部分比较难,大一考计算机二级C语言难不难

  1. 二级C难度不大,相比来说来说容易的。

  2. 因为C语言是最基础的计算机语言,VB、C++基本是C语言的延伸如果有C语言基础,学其他语言就不会很吃力,而且二级C语言考试难点在于数组,指针,函数这三大部分起码占40%的分数。

  3. 其次机试部分也不是很难只有三题,一题是改错题,考的是你对程序的细心,语法的分析,等等一题是填空题,有点难度最难的就是编译题,它会给出大部分,然后要你补充完整这题考的是你C语言的积累,基本要有自己不看例题就要编出程序的能力而且这题占40分一般来说,只要做对前两题得60分就算过机试了。

  4. 所以说,C语言相对其他在二级考试中是最容易的

你知道哪些学习C语言过程中的难点?

实际学习c语言最大难点是c语言之外的东西,大家都说指针难懂,但如果您非常熟悉某一种汇编,熟悉微机原理,甚至了解编译原理过程,有操作系统的知识,了解最终目标代码中heap,stack等,指针就是一个soeasy的事,同理关于struct也是。我们上学早,那时没有c,只有pascal,印象关于文件那章我就学的云里雾里,最终只是应付考试的水准。后来工作,接触多了,重新学习了操作系统,甚至是汇编,发现实际这个问题和操作系统有很大关系。c/c++也是这期间自学的,根本没看过什么谭浩强的书,通过反汇编看c/c++代码,了解其实际实现机制,突然发现所谓c++的虚函数,纯虚函数如此简单,甚至了解了gcc和vc的差异。后来是看官方库,那时还是bc,读linux内核,重读编译原理发现实际c/c++真的非常好学:因为他们最接近底层,如果您这些知识扎实,才发现c是最直接的。之所以,c难学并非语法本身,而是相关知识不足。

c++语言最难学的是什么

作为一个用了3年多C/C++的程序狗,我来说两句。

说到C++的难点,其实很多地方是一言难尽的。我不敢声称我精通C++,我甚至觉着八成的人都不能这么说。甚至我可以确定,在我工作的过程中我肯定是没有用过C++所有的语言特性,甚至有些语言特性到现在看来我都觉着是天书。

C++的坑太多了,简单说几点:

  1. 指针并不能简单算做是C++的痛点,这个特性继承自C,它带来的问题很多:当你的程序莫名崩溃,你就要好好考虑下,是不是出了野指针,或者你的程序有MemoryLeak?这个对新手来说简直是地狱,如果再混下多线程,OMG,谁能告诉我这个对象的生命周期到底应该如何管理。也许你需要make_shared,但是你要知道,半自动的内存管理要用好也是要花功夫的,而且仍然不能杜绝问题的产生。

  2. 跨平台。也许有人跟你说过C++跨平台,一份代码在不同的平台上都能找到编译器来编译。这句话本身没错,问题在于,有没有人告诉过你,不同的编译器对C++标准支持是不一样的?C++的跨平台在我看来就是宏预处理堆砌出来的跨平台。这个对Java或者C#的程序员来说,会崩溃的。你见没见过有语言上来就重新定义自己的int,long类型的?你去看大型的C++项目,尤其是有年头或者有历史沿袭的,基本都这么干过。为什么?因为早些年大家没啥好办法,为了让自己的程序在不同平台上的表现尽量一致,只能自己把基本类型重定义一遍。

  3. stl,说到这个一脸泪。stl好用吗?很好用。stl好学吗?一点也不好学。它的学习成本太高了,而且代码晦涩。C++的模板库基本都是一个德行。如果你发现你看不懂你常用的std::vector<>里的代码,很正常,这种模板的语法习惯起来需要时间。很多人诟病stl太大,内存释放效率低,不同平台实现不一致等等问题。关于这个不一致的问题,我们来说一下:windows平台vc自己实现了stl。linux上gnu实现了gnustl。android平台早些年用stlport,据说是个经典的实现版本,后来换用了gnu的实现。mac上苹果的clang用的是不是自己实现的还是直接用了gcc的不太清楚,没有用过水果的产品做开发。那么stl在C++上处于一种什么地位?它就是C++的标准模板库啊?用过java和C#的都知道,标准库是个什么地位。离了它们不出活啊。也许我们可以重新写一个?ok,在java,C#上你是看不到的,但苦逼的C++众不少人这么干过,或者早些年在stl功能简陋的时候曾经这么干过。EA就专门针对游戏开发写过一个EASTL,还是开源的。对于一个语言来说,标准库如此的不统一,实在是令人头大。

  4. C++11这个可以拿来所说的,总体来说不算缺点。C++11对于C++来说试一次很彻底的进化。解决了很多问题,引入了lambda,新的右值引用,新的智能指针等等。当时为什么要列在这里呢?学习成本啊亲。我们就说引用,以前我们有普通的值引用,常量引用,现在我们多了一个右值引用。没错,现在右值也可以有引用了。什么,你不清楚引用,常量,左值和右值的概念?正常,在没有右值引用之前,我就没在意过左值和右值的区别。现在不一样了啊,扔给你个std::movestd::forword为了会用,你还要滚回去把左值和右值白扯清楚。

  5. 看到有人说类,补充一个。我觉着C++的类模型设计上是有问题的。而且多继承现在的普遍观点是这是个缺点大过优点的特性。单继承+受限类的多继承目前比较有市场。可以看看Java8,它就是这么干的。还有就是支持重载必须显式声明为virtual,而且子类中是看不出基类中是否有virtual声明的。这个是个有点扯淡的要求。因为在一个庞大的继承树中,你可能需要跟踪到继承树的根节点才能知道到底是不是virtual的。个人理解可以由编译器自行推断,但是现有的标准并没有这么做,不知道是为了兼容还是觉着这么做会带来问题。我们来看一下常用的关于类的C++语言特性:多继承,虚函数,构造函数,析构函数,拷贝构造函数,运算符重载,公有继承私有继承保护继承,友元函数友元类,静态成员。这是我能想到的,C++类的复杂度绝对是超过java和C#的。就一个多继承时多级父类的构造和析构过程就够新手挠头一阵的。

大概上是这样,这个是我说理解的C++存在的问题。如果你去知乎上搜,可以找到更多。比如ABI接口兼容问题,跨dll的内存释放问题,自动构造析构导致你根本无法精确控制内存,不去做专门了解,你都不知道编译器产生过几个临时对象,它们又在何时产生了析构。

对C的兼容,对多种编程范式的支持,新语法的不断加入,不同编译器标准的支持力度,平台相关性带来的跨平台问题等等困扰着C++。它仍然是一门好语言,但并不完美,它不对你的使用做出任何的假定和限制,所以如果你滥用这些过于灵活和强大的特性,程序肯定会崩给你看的。

以上。

C语言很难学么?到底哪里难学?怎么学好?

作为初学者我想给你提几个建议,因为我还接触C语言不久所以有些错误的话还请谅解。
首先C语言很自由的,难学我倒没有这种感觉,应该是比Pascal要来得有趣些,就是符号什么的一开始有些难记,但用熟了就行了对吧。总之C语言据说,应该是的是所有语言的基础,大学也是肯定要接触的。
C语言应该是指针一块较难学懂,而且有时候会把电脑直接搞黑还是怎么的。教材的话我推荐是从基础的语言开始学起。不论是竞赛还是实际开发基础开始还是一样的。我是老师直接上课的,很多人会用《c语言程序设计谭浩强版》,我个人觉得也应该不错,就推荐你用下这本。
我还刚学不久,作为初学者还一起努力。
对了我建议你去杭电ACM上去做题,在线做完题就能提交,注册个账号也很快的,这样对于编程能力能够很好的提高。这里是网址:http://acm.hdu.edu.cn/listproblem.php?vol=11我就给你第十一页的题目了,因为是这一页是从易到难的中文题目。

免责声明:本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即在【本页面底部评论留言】通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意

(0)
投稿专栏的头像投稿专栏官方
上一篇 2024年3月29日
下一篇 2024年3月29日

相关推荐

发表回复

登录后才能评论