当前位置:首页 » 编程语言 » c语言最难的是什么
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言最难的是什么

发布时间: 2023-02-02 13:24:06

c语言最难学的是什么

嗯,很佩服lz的自学能力。
谭浩强的c语言的书,很权威,很详细,很适合自学的。
学习c语言很重要的一点就是学习理论知识与上机训练结合起来。学完一章后就按课本后面的习题上机练练。这样稳扎稳打的学起来很好了。又win—tc软件配合上机训练不错。
指针是学习者公认的最难学的。还有指向指针的指针。后面还有结构体和链表,里面都有用到指针的知识。如果指针学得后,那在以后的设计里会相当实用方便。

Ⅱ 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实现了gnu stl。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::move std::forword 为了会用,你还要滚回去把左值和右值白扯清楚。

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


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


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


以上。

Ⅵ c语言最难在什么地方

c语言最难在它缺乏逻辑性--形式逻辑不成立。
例如:
char
str[]="abcdef";
//声明
str
是字符串,初始化成
"abcdef"。
可是,一样是赋值,写在语句里:
str[]="abcdef";

str="abcef";
却都是错的。而要调用函数:
strcpy(str,"abcdef");
才行。
例如:
int
a=4;
int
*b=&a;
//
声明
b
是指针,让它指向a。
printf("%d",
*b);
//
打印
b
的值。
如果语句里写:
*b=&a;//

是错的,你瞧,外形同声明里一样,却
是错的。
语句里要写:
b=&a;
//
你瞧,b
前面没*号
才正确。
你要是写:
b=a;
//
对不起,又错了。
例如,声明了:
int
a;
int
*b
语句里
可以

a,
可以

&a,
可以

b,
却不可以

&b
形式。
语句里
可以

b,
可以

*b,
可以

a,
却不可以

*a
形式。
所谓C语言指针难,难在
形式逻辑不成立。
而我们经验中的
数学,却是
逻辑性很强,形式逻辑成立。
初学者,最难理解就是
“形式逻辑不成立”这点。

Ⅶ c语言程序设计难点在哪里

C语言是一种表达力很强的语言,而且与其他语言相比显得比较精炼高效。在C语言中的语法部分,比较难的是指针,由于它很灵活,用好的话能大大提高效率,反之则容易出错(一般是内存空间指向出错,如指针空悬、内存泄露等),但是当你练多了,指针应该也不成问题(要有意识的去练),我觉得真正的难点在于算法逻辑。理论上,C语言只要求你时刻知道自己在干什么,要实现什么功能,只要你的程序逻辑明晰,一般不用再DEBUG,一次就能成功,反之,如果自己都感觉模糊,那程序只会比你还模糊:-D,要极好的人品才能勉强运行成功,但出不出正确结果还不一定。解决的方法很简单,就是练。每成功写出一个程序,都会让自己有所进步,积累多了,就能在编程之前在大脑里构建出清晰的蓝图,编程自然不在话下。祝你在通往程序员的道路上一路狂奔,呵呵

Ⅷ 学C语言最难的 是什么

c语言中最灵活的是指针,最难学的也是指针。
不过,只有多多练习,也不难学。
上机实践特别重要,编程语言指在书面上写程序是永远也学不好的!!
通过实践,就可以深刻的理解书本中的道理!!

Ⅸ c语言里面最难的是不是指针啊,乍学啊

指针是C语言里面最灵活最有用的当然也是最难的。你不要希望一下子就完全明白,慢慢来,多读读程序,自己动动手去尝试指针的操作。这样循序渐进,你对指针的理解才会越来越透彻,最后到C语言里面根本没指针这种境界就差不多了。楼主,记住“温故而知新”这句话,一定要反复地重温,这样你对指针的理解才能加深。

Ⅹ c语言中最难得是什么

指针,特别是指向指针的指针和指向函数的指针