有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (6) 个答案

  1. # 1 楼答案

    毫无疑问,首先也是最重要的是,它是手动内存管理

    其次,C没有对象,所以C代码的结构往往与Java代码非常不同

    编辑:一个小故事:15年前,当PPP还很新的时候,在UNIX命令提示符下登录到您当地的ISP是很常见的,而大学校园里仍然有很多UNIX服务器的哑终端,许多人有一个名为fortune的程序,当我们登录并输出一个随机的极客陈词滥调时,该程序就会运行。有一天,当我登录阅读时,我真的大笑起来:

    C -- a programming language that combines the power of assembly language with the flexibility of assembly language.

    这很有趣,因为这是真的:C是现代计算的汇编语言。这不是批评,只是观察

  2. # 2 楼答案

    也许最困难的概念是学习如何自己处理指针和内存管理。Java实质上抽象了许多与指针相关的概念,但在C中,您必须理解指针之间以及与语言中其他概念之间的关系

  3. # 3 楼答案

    人们已经讨论了它们之间的巨大差异:内存管理、指针、没有奇特的对象(只有简单的结构)。因此,我将列出几件小事:

    • 您必须在代码块的开头声明内容,而不仅仅是在第一次使用它们时
    • 指针、布尔值、整数和几乎任何东西之间的自动类型转换。这是典型的C代码:if (!ptr) { /* null pointer detected */ }
    • 没有任何意义上的边界检查,也不允许使用花哨的指针算法。引用边界之外的事物是明确合法的:ptr2 = ptr + 10; ptr2[-10] ++;相当于ptr[0] ++
    • 字符串是以零结尾的字符数组。忘记这一点和前一点会导致各种错误和安全漏洞
    • 头应该与实现代码(.h和.c)分开,并且必须通过#include语句显式地相互引用,避免任何循环依赖关系。有一个预处理器,编译时宏(如#include)是语言的重要组成部分
    • 最后--C有一个goto语句。但是,如果你用过它,Dijkstra会从坟墓里爬出来,困扰你
  4. # 4 楼答案

    除了标准C是一种非OO语言、标准库非常小(and in some places, just plain bad)、手动内存处理的繁琐、完全缺乏线程实用程序(甚至没有多线程意识)、松散的“类型系统”以及为单字节字符集构建,我认为最大的概念差异是,你必须对对象(或内存块,在C语言中)的所有权有一个清晰的概念

    指定对象的所有权始终是一种很好的做法,但对于非GCed语言来说,这是至关重要的。当您将指针传递给另一个函数时,该函数将承担指针的所有权,还是在调用期间从您那里“借用”指针?当你编写一个带有指针参数的函数时,假设指针的所有权对你来说有意义吗?还是指针对象在函数终止后继续存在

  5. # 5 楼答案

    除了指针和内存管理,C不是一种面向对象的语言。您可以组织代码以满足一些基于对象的概念,但您将错过一些特性,如继承、接口和变形

  6. # 6 楼答案

    Java有一个庞大的标准库,而C则很小。你会发现自己一次又一次地发明各种轮子。即使你正在写你职业生涯中的第十五个链表库,你也可能会犯同样的错误

    除了数组,C没有标准的容器,几乎没有算法,没有对网络、图形、web任何内容、xml任何内容等的标准访问。你必须真正知道自己在做什么,以免意外地调用未定义的行为,导致内存损坏、资源泄漏、崩溃等。这不是为游客准备的

    祝你好运