FaGe's Blog

吹啊吹啊。

标签:C语言

共 7 篇文章

后记:“解构 K&R C” 已死

“解构 K&R C” 已死 原文:Deconstructing K&RC Is Dead 译者:飞龙 我彻底失败了。我放弃了多年以来尝试理清C语言如何编写的想法,因为它的发明是有缺陷的。起初,我的书中有一章叫做“解构 K&R C”。这一章的目的是告诉人们永远不要假设它们的代码是正确的,或者对于任何人的代码,不管它有多出名,也不能避免缺陷。这看起来似乎并不是革命性的想法,并且对我来说它只是分析代码缺陷和编写更好更可靠代码的一部分。 多年以来,我在写这本书的这一块时收到重挫,并且收到了比任何其它事情更多的批评和侮辱。不仅如此,而且书中这部分的批评以这...

阅读全文

练习24:输入输出和文件

练习24:输入输出和文件 原文:Exercise 24: Input, Output, Files 译者:飞龙 你已经学会了使用printf来打印变量,这非常不错,但是还需要学习更多。这个练习中你会用到fscanf和fgets在结构体中构建关于一个人的信息。在这个关于读取输入的简介之后,你会得到C语言IO函数的完整列表。其中一些你已经见过并且使用过了,所以这个练习也是一个记忆练习。 #include <stdio.h> #include "dbg.h" #define MAX_DATA 100 typedef enum EyeColor { BLUE_EYES, GREEN_EYES, BROWN_EYES, BLACK_EYES, OTHER_EYES } EyeColor; const char *EYE_COL...

阅读全文

练习22:栈、作用域和全局

练习22:栈、作用域和全局 原文:Exercise 22: The Stack, Scope, And Globals 译者:飞龙 许多人在开始编程时,对“作用域”这个概念都不是很清楚。起初它来源于系统栈的使用方式(在之前提到过一些),以及它用于临时变量储存的方式。这个练习中,我们会通过学习栈数据结构如何工作来了解作用域,然后再来看看现代C语言处理作用域的方式。 这个练习的真正目的是了解一些比较麻烦的东西在C中如何存储。当一个人没有掌握作用域的概念时,它几乎也不能理解变量在哪里被创建,存在以及销毁。一旦你知道了这些,作用域的概念会变得易于理解。 这个练...

阅读全文

练习21:高级数据类型和控制结构

练习21:高级数据类型和控制结构 原文:Exercise 21: Advanced Data Types And Flow Control 译者:飞龙 这个练习是C语言中所有可用的数据类型和控制结构的摘要。它也可以作为一份参考在补完你的知识,并且不含有任何代码。我会通过创建教学卡片的方式,让你记住一些信息,所以你会在脑子里记住所有重要的概念。 这个练习非常有用,你应该花至少一周的时间来巩固内容并且补全这里所没有的元素。你应学出每个元素是什么意思,以及编写程序来验证你得出的结论。 可用的数据类型 int 储存普通的整数,默认为32位大小。 译者注:int在32或64位环境下为...

阅读全文

练习12:If,Else If,Else

练习12:If,Else If,Else 原文:Exercise 12: If, Else-If, Else 译者:飞龙 if语句是每个编程语言中共有的特性,包括C语言。下面是一段代码,使用了if语句来确保只传入了一个或两个命令行参数: #include <stdio.h> int main(int argc, char *argv[]) { int i = 0; if(argc == 1) { printf("You only have one argument. You suck.\n"); } else if(argc > 1 && argc < 4) { printf("Here's your arguments:\n"); for(i = 0; i < argc; i++) { printf("%s ", argv[i]); } p...

阅读全文

练习4:Valgrind 介绍

练习4:Valgrind 介绍 原文:Exercise 4: Introducing Valgrind 译者:飞龙 现在是介绍另一个工具的时间了,在你学习C的过程中,你会时时刻刻用到它,它就是 Valgrind。我现在就向你介绍 Valgrind,是因为从现在开始你将会在“如何使它崩溃”一节中用到它。Valgrind是一个运行你的程序的程序,并且随后会报告所有你犯下的可怕错误。它是一款相当棒的自由软件,我在编写C代码时一直使用它。 回忆一下在上一章中,我让你移除printf的一个参数,来使你的代码崩溃。它打印出了一些奇怪的结果,但我并没有告诉你为什么它会这样打印。这个练习中我们要使...

阅读全文

练习0:准备

练习0:准备 原文:Exercise 0: The Setup 译者:飞龙 在这一章中,你将为C语言编程配置好你的系统。一个好消息是对于所有使用Linux或者Mac的人,你的系统是为C语言编程而设计的。C语言的创造者也对Unix操作系统的创造做出了贡献,并且Linux和OSX都是基于Unix的。事实上,安装工作会非常简单。 对于Windows上的用户,我有一个坏消息:在Windows上学习C非常痛苦。你可以在Windows上编写C代码,这并不是问题。问题是所有的库、函数和工具都和其它的C语言环境有些差异。C来自于Unix,并且和Unix平台配合得比较好。恐怕这是一个你并不能接受的事实。 ...

阅读全文