【问题标题】:Tutorial on C pointers and arrays from a Java standpoint从 Java 角度讲 C 指针和数组的教程
【发布时间】:2011-05-20 07:59:46
【问题描述】:

我目前是一名大学新生,主修计算机科学。我的“计算机编程入门”课程即将完成。我喜欢它,感觉我学到了很多东西。

几天前,我阅读了 Joel 的 The Peril Of Java Schools。 “链接列表?”我想,“这些都不难。我们已经在我现在所在的班级里完成了很多。”这是正确的,因为在 Java 中,它们并不难。但无论如何,我试着用 C 写一个。

这太难了!

Joel 是对的,我认为……Java 为您处理了这么多琐碎的小事,实际上并不难。但我决心克服我学校的 Java-tude 并学习如何用 C 编写这个该死的链表。

所以我想,与其试图问很多很多小问题,我想问的是,有人知道学习 C 的好的(免费)在线教程吗?具体来说,学习如何处理指针和所有这些符号(&***[] 以及它们如何协同工作)我想我已经非常精通 Java,所以我不需要关于如何编写“Hello, World!”的教程。程序。但是我肯定还没准备好学习任何超高级的 C 或 C++,因为我只知道 Java。

任何帮助表示赞赏!

【问题讨论】:

  • 在线教程的问题是它们几乎总是质量很差并且存在有害的技术错误和其他错误,或者推荐一般风格差的编码(我对在线C资源的熟悉程度不如我使用 C++,但对于 C++,没有好的、免费的在线教程)。如果您想学习 C 以及指针和数组以及该语言的其他方面的工作原理,请帮自己一个忙,get a good beginner book
  • 我不知道通过指定“从 Java 的角度来看”有什么好处,因为 Java 与指针没有任何明显的类比......可能你只想要一个 @987654323 @,还有are 问题already
  • 不过,Alf Steinbach's Pointers Tutorial 可能对您有用。它写得很好,但侧重于 C++,而不是 C。不过你仍然需要一本好书。
  • 虽然我同意 Joel 的观点,即有很多东西被教得很糟糕(或根本没有教),但总的来说,我强烈反对如何教它们。我不认为让孩子编写所有低级代码是一项富有成效的练习。最好是在课堂上作为一个小组来制作它,讨论它,让每个人讨论错误等。这样,至少教授可以在那里喊“omfg for the N+1th at least 阅读该死的错误!”。让学生在零理解的情况下独自坐着并四处游荡并不会导致更多的理解;它会导致剽窃。
  • +1 表示希望成为一名称职的工程师,而不仅仅是勉强完成你的课程。

标签: java c arrays pointers


【解决方案1】:

【讨论】:

  • @dmckee 很难在评论中显示链接列表嗯?
  • 我一直这样做。我对这个问题的评论包含 3 个链接,有时我会做更多。使用内联语法[ 文本]( 链接)。当然有长度限制,但是你可以在 600 个字符中得到很多。
  • 我什么都没说 :) 是 Karl 发表了评论 ;)
  • @dmckee 我的观点是,在一个句子中按顺序呈现链接列表在风格上很尴尬。但也许只有我有这种感觉。
【解决方案2】:

检查并查看您的课程是否需要系统编程。它通常是一门 300 级的大二课程,而我在下学期就读。它大量涉及在 Unix 中使用 C+GCC。

检查您的 CS 部门库(如果存在)。我拿起了一本 K&R,准备在寒假期间继续工作。

【讨论】:

【解决方案3】:

This 用于 C++,而不是 C;但直到第 3.7 章左右才以对潜在 C 程序员有用的方式讨论机器级别的内容。

【讨论】:

  • 我以前没有看过那个网站,但是看了一眼之后,我认为它不应该被推荐为一个好的 C++ 资源。它根本不讨论异常,因此也没有讨论 RAII 或智能指针。它避开了自己的“更易于使用”的 STL 容器。显然作者没有编写太多 C++,因为他说“因为标准库标识符的使用如此频繁,每次我们想要引用其中一个时都不得不说 std:: 很烦人。”我不知道这本书是怎么说指针的,但我不会相信它。
  • @James 它稍后会处理异常,并展示了使用信封体成语来管理多态类。在需要时引入概念。我也觉得每次都写std:: 很烦人,这正是因为我写了很多。拥有一个真正的命名空间系统的一半是能够在它引起冲突时删除前缀,IMO。说真的,请不要这么快判断。
【解决方案4】:

互联网上有许多学习指南。这是我用过的http://pweb.netcom.com/~tjensen/ptr/pointers.htm

我还将向您推荐这本书:Hacking, the Art of Exploitation 2nd Ed

这本书不会让你成为“黑客”。只有大量的逆向工程/研究二进制代码、反复试验等才能做到这一点。但是,它确实向您介绍了如何开始做这些事情,这归结为对 C 如何工作的基本理解,包括指针。它对汇编/C 的介绍是我见过的最好的介绍之一,因为它让您了解了几个 C 示例,以及您如何调查 gdb(一个命令行调试工具)的情况。这样您就可以看到 C 并看到程序集。这包括对什么是指针的基本理解。

这本书将作为一个副作用向您介绍堆栈和堆、数据结构等。简而言之,阅读介绍部分将为您接下来的课程带来很多好处。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 1970-01-01
    相关资源
    最近更新 更多