代码之家  ›  专栏  ›  技术社区  ›  Ross

在学习C++之前,我应该先学习C吗?[关闭]

c c++
  •  135
  • Ross  · 技术社区  · 17 年前

    今天我参观了一所大学计算机科学系的开放日,在实验室参观中,我们坐下来玩了几个本科生的最后一年项目。其中一款特别好——一款FPS小行星游戏。我决定去看看 src 查找它的目录是用C++完成的(其他大多数项目都是Java 3D应用程序)。

    我以前没有做过任何C,但我以前看过一些C代码。从我在这个游戏的.cpp代码中看到的,它看起来并没有太大不同。

    我对学习C或C++很感兴趣,但以后可能会学习另一种。 一个接一个地学习对我有什么好处吗

    14 回复  |  直到 15 年前
        1
  •  133
  •   Community Mohan Dere    9 年前

    仅仅因为C++有很多相同的语法和语义,并不意味着你需要先学习C。

    如果你学习C++,你最终将学习大部分C语言,但随着时间的推移,你将学习的语言之间会有一些差异。事实上,编写正确的C++是一件非常困难的事情,因为中级C++程序员倾向于编写C/C++。无论你是从C开始还是从C++开始,这都是正确的。

    Please see further reasoning in this answer .

        2
  •  83
  •   cdonner    17 年前

    我想这取决于你是想滑雪还是滑雪。如果你想两者都做,你必须两者都学。

        3
  •  71
  •   Dima    16 年前

    我首先学习了C,在学习C++之前,我学习了一门使用C的数据结构课程。这对我来说很有效。C语言的数据结构课程让我对指针和内存管理有了扎实的理解。一旦我了解了面向对象范式是什么,它也让我清楚地看到了它的好处。

        4
  •  21
  •   Head Geek    17 年前

    如果你决定同时学习这两种语言(正如其他人提到的,没有明确的必要同时学习这两者),请先学习C。从C到C++感觉就像一个自然的过程;走另一条路感觉就像故意把一只手绑在背后。 :-)

        5
  •  14
  •   Adam Hawes    17 年前

    我认为你应该先学C,因为我先学了C。C让我很好地掌握了语法,并学会了指针等东西,所有这些都流入了C++。

    我认为C++可以很容易地解决所有这些问题(需要一个在使用[]运算符和可疑索引时不会溢出的数组?当然,可以创建一个进行边界检查的数组类),但你需要知道它们是什么,并被它们所困扰,然后才能理解为什么以某种方式完成事情。

        6
  •  13
  •   Steve Rowe    17 年前

    应该 在学习C++之前先学习C。这绝对不是必要的,但我认为它使学习C++变得容易得多。C是C++的核心。你学到的任何关于C的知识都适用于C++,但C要小得多,也更容易学习。

    取K&R并通读一遍。它很短,会给你足够的语言感。一旦你掌握了指针和函数调用的基础知识,你就可以更容易地学习C++了。

        7
  •  10
  •   Community Mohan Dere    9 年前

    在学习C++的过程中,你也会学到大部分的C。但请记住,很多C++代码都是无效的。C++的设计是为了与C代码兼容,所以我想说先学习C++。Brian写了一篇 great answer 关于这一点。

        8
  •  9
  •   hillu    17 年前

    学习C会迫使你在编写代码时更加努力地思考一些问题,例如显式和隐式内存管理或基本数据类型的存储大小。

    一旦你对C的功能感到满意 以及特征错误 ,你可能会在学习和编写C++时遇到更少的困难。

        9
  •  8
  •   Scottie T    17 年前

        10
  •  8
  •   bobobobo    16 年前

    我认为先学习C是个好主意。

    计算机科学课程仍然使用C是有原因的。

    在我看来,要求OOP的义务是为了避免主题的“拥挤”。

    我认为过程式编程是首先学习编程的最自然的方法。我认为这是真的,因为归根结底,这就是你所拥有的:一行行代码一行地执行。

    如今,许多文本都在推动“对象优先”的方法,并在引入阵列之前开始谈论汽车和换档。

        11
  •  8
  •   Daniel Daranas    8 年前

    号码

    如果你的目标是学习C++,那么首先要学习现代的标准C++。把马洛克放在一边。


    Steve Rowe has a point ...

        12
  •  7
  •   TrayMan    17 年前

    在观察到那些先学习Java的人在C++中难以理解指针和内存管理的概念后,我认为先学习C是一个好主意,以便掌握这两个概念,与其他C++特性的复杂性隔离开来。

        13
  •  6
  •   Agnius Vasiliauskas    15 年前

    我建议先学习C,因为:

    • 支持C编译器的平台比支持C++的平台多,无论是嵌入式系统、GPU芯片等。
    • 根据 TIOBE index C的受欢迎程度仍然是C++的2倍。
        14
  •  3
  •   Marnix v. R.    15 年前

    祝你好运。