Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
学习C程序设计的资源_C - Fatal编程技术网

学习C程序设计的资源

学习C程序设计的资源,c,C,来自OO背景(C#/java)的我正在寻找学习如何设计好纯C程序的资源 虽然我熟悉C语言的语法,也能编写小程序,但我不确定大型应用程序采用什么方法,以及采用什么技术。任何你们能推荐的 编辑:为了用C语言编程,我很高兴完全放弃OO,我的兴趣是学习如何在没有OO的情况下构造程序,我想学习用过程语言(如C)设计程序的好方法。这里有一些关于C中OO编程的不同问题。我发表了一篇关于我使用过的一些C代码的帖子,这些代码基本上推动了面向对象,不包括虚拟方法 如果我在做C编码,我会使用这种技术来定义“对象” 我

来自OO背景(C#/java)的我正在寻找学习如何设计好纯C程序的资源

虽然我熟悉C语言的语法,也能编写小程序,但我不确定大型应用程序采用什么方法,以及采用什么技术。任何你们能推荐的

编辑:为了用C语言编程,我很高兴完全放弃OO,我的兴趣是学习如何在没有OO的情况下构造程序,我想学习用过程语言(如C)设计程序的好方法。

这里有一些关于C中OO编程的不同问题。我发表了一篇关于我使用过的一些C代码的帖子,这些代码基本上推动了面向对象,不包括虚拟方法

如果我在做C编码,我会使用这种技术来定义“对象”

我发现记住总是很有帮助的,并且可以在大多数语言中实现


这里有一个很好的PDF讨论。

tanenbaum的minix有一个UNIX书籍列表,其中包括大多数经典的C/UNIX作品。对于Windows上的C编程,Petzold可能是最好的开始

对于C程序设计,一些UNIX编程书籍会告诉您代码片段,但我不知道有什么“C程序体系结构”书籍

如果您习惯于java,C编程的一些技巧如下:

  • 。调用过程时,通常需要在调用方的堆栈框架中分配变量,并将指向这些变量的指针传递到要调用的过程中。这将大大快于动态分配内存,并且更不容易出错。在适当的地方这样做

  • C没有这样做,动态分配数据项更为灵活,您必须跟踪它们,以使在堆栈上分配的变量(见1)在适用的地方更为“惯用”。此外,您不必释放它们-这是局部变量的额外好处

  • >P(2),考虑一个体系结构,其中函数返回状态或错误代码,并按栈(1)将数据输入和输出。

  • 去了解和做什么。它们对于通用错误处理机制(代替结构化异常处理功能)非常有用

  • 见(3)

  • 他是你的朋友。甚至更友好

  • 即使可以,也要了解它的用途和不应用途

  • 了解建筑奥秘的来龙去脉和其他低级建筑奥秘。与大众观点相反,这些都不是火箭科学。如果你感兴趣,试着涉猎汇编语言,并获得相关的工作知识。这将有助于您了解C程序中正在发生的事情

  • C没有模块作用域的概念,所以请计划使用include、原型声明以及和来生成私有作用域和导入标识符

  • 在计算机上,用C语言编写GUI程序是乏味的

  • 关于(10)学习至少一种脚本语言的C API,或者在许多情况下,C的最佳用途是作为基本上用其他语言编写的应用程序上的核心高性能引擎

  • 构造函数的等价物是一个初始化函数,您可以在其中传入指向要设置的项的指针。通常,您可以通过调用类似于
    setup\u foo(&my\u foo)
    的函数来看到这一点。最好将分配与初始化分开,因为您可以使用此函数初始化已在堆栈上分配的项。类似的原理也适用于析构函数

  • 大多数人发现它和匈牙利文一样可读。但以匈牙利语为母语的人除外,他们通常认为匈牙利语符号与匈牙利语符号一样易读。不幸的是,在Windows软件中广泛使用匈牙利符号,整个Win32 API都使用匈牙利符号,这对在该平台上编写的软件的易读性产生了预期的影响

  • C/Unix书籍,即使是像已故的W理查德·史蒂文斯(Richard Stevens)所写的那些非常好的书籍,也往往可以通过亚马逊市场以相当便宜的价格买到二手书。在没有特定顺序的情况下,获取Stevens和and(如果在Windows上工作)以及任何其他经典C/Unix作品的副本。阅读,用铅笔在书上涂鸦,通常与书互动

  • 网络上有很多很好的资源

  • 阅读并理解《圣经》和一些关于戒律背后的原因的元讨论。这在一定程度上显示了它的时代,尽管它的大部分仍然是相关的,而且晦涩难懂的编译器仍然是相关的

  • 如果你想写解析器,你是你的朋友

  • 作为Navicore,Hanson的是一个针对模块化体系结构的界面/实现设计,并提供了大量示例。我真的听说过这本书,也听说过这本书的好东西,尽管我不能说自己读过它。除了我上面描述的C习惯用法之外,这个概念可以说是好的过程设计的核心。事实上,其他过程语言(如Modula-2)实际上在其设计中明确了这一概念。这可能是最接近于出版的“C程序体系结构”书籍的东西

  • 读这本书


  • David Hanson的“C接口和实现”中提到了我对从OO回到C的担忧


    说真的,它的方法在避免意外地构建许多非oo系统最终成为的大问题方面起到了巨大的作用。

    虽然它是作为某种语言不可知的文本编写的,但在代码结构和组织以及构建实践方面提供了很多很好的指导。

    更大的应用程序?C的优势在于当您必须处理诸如设备驱动程序、调度器和o之类的低级事务时