笨办法学C 导言:C的笛卡尔之梦

2016-06-06
阅读 3 分钟
2k
Whatever I have up till now accepted as most true and assured I have gotten either from the senses or through the senses. But from time to time I have found that the senses deceive, and it is prudent never to trust completely those who have deceived us even once. 勒内·笛卡尔,《第一哲学沉思录》

笨办法学C 练习0:准备

2016-06-06
阅读 3 分钟
2.2k
在这一章中,你将为C语言编程配置好你的系统。一个好消息是对于所有使用Linux或者Mac的人,你的系统是为C语言编程而设计的。C语言的创造者也对Unix操作系统的创造做出了贡献,并且Linux和OSX都是基于Unix的。事实上,安装工作会非常简单。

笨办法学C 练习19:一个简单的对象系统

2016-06-05
阅读 11 分钟
1.7k
我在学习面向对象编程之前学了C,所以它有助于我在C中构建面向对象系统,来理解OOP的基本含义。你可能在学习C之前就学了OOP语言,所以这章也可能会起到一种衔接作用。这个联系中,你将会构建一个简单的对象系统,但是也会了解更多关于C预处理器的事情。

笨办法学C 前言

2016-06-04
阅读 1 分钟
1.7k
前言 原文:Preface 译者:飞龙 这是本书创作中的转储版本,所用的措辞可能不是很好,也可能缺失了一些章节,但是你可以看到我编写这本书的过程,以及我的做事风格。 你也可以随时发送邮件到help@learncodethehardway.org来向我寻求帮助,我通常会在1~2天之内答复。 这个列表是一个讨论列表,并不只允许发布公告,它用于...

笨办法学C 练习18:函数指针

2016-06-01
阅读 5 分钟
2k
函数在C中实际上只是指向程序中某一个代码存在位置的指针。就像你创建过的结构体指针、字符串和数组那样,你也可以创建指向函数的指针。函数指针的主要用途是向其他函数传递“回调”,或者模拟类和对象。在这歌1练习中我们会创建一些回调,并且下一节我们会制作一个简单的对象系统。

笨办法学C 练习17:堆和栈的内存分配

2016-06-01
阅读 8 分钟
2.2k
在这个练习中,你会在难度上做一个大的跳跃,并且创建出用于管理数据库的完整的小型系统。这个数据库并不实用也存储不了太多东西,然而它展示了大多数到目前为止你学到的东西。它也以更加正规的方法介绍了内存分配,以及带领你熟悉文件处理。我们实用了一些文件IO函数,但是我并不想过多解释它们,你可以先试着自己理解。

笨办法学C 练习16:结构体和指向它们的指针

2016-05-22
阅读 4 分钟
1.6k
在这个练习中你将会学到如何创建struct,将一个指针指向它们,以及使用它们来理解内存的内部结构。我也会借助上一节课中的指针知识,并且让你使用malloc从原始内存中构造这些结构体。

笨办法学C 练习15:指针,可怕的指针

2016-05-21
阅读 5 分钟
1.8k
指针是C中的一个著名的谜之特性,我会试着通过教授你一些用于处理它们的词汇,使之去神秘化。指针实际上并不复杂,只不过它们经常以一些奇怪的方式被滥用,这样使它们变得难以使用。如果你避免这些愚蠢的方法来使用指针,你会发现它们难以置信的简单。

笨办法学C 练习14:编写并使用函数

2016-04-14
阅读 2 分钟
1.7k
练习14:编写并使用函数 原文:Exercise 14: Writing And Using Functions 译者:飞龙 到现在为止,你只使用了作为stdio.h头文件一部分的函数。在这个练习中你将要编写并使用自己的函数。 {代码...} 在这个例子中你创建了函数来打印任何属于“字母”和“空白”的字符。下面是一个分解: ex14.c:2 包含了新的头文件,所以你可...

笨办法学C 练习13:Switch语句

2016-04-14
阅读 3 分钟
1.7k
在其它类似Ruby的语言中,switch语句可以处理任意类型的表达式。一些语言比如Python没有switch语句,因为带有布尔表达式的if语句可以做相同的事情。对于这些语言,switch语句比if语句更加灵活,然而内部的机制是一样的。

笨办法学C 练习12:If,Else If,Else

2016-04-14
阅读 2 分钟
1.5k
练习12:If,Else If,Else 原文:Exercise 12: If, Else-If, Else 译者:飞龙 if语句是每个编程语言中共有的特性,包括C语言。下面是一段代码,使用了if语句来确保只传入了一个或两个命令行参数: {代码...} if语句的格式为: {代码...} 下面是其它语言和C的差异: 像之前提到的那样,TEST表达式值为0时为false,其它情...

笨办法学C 练习11:While循环和布尔表达式

2016-04-13
阅读 2 分钟
1.5k
你已经初步了解C是如何处理循环的,但是你可能不是很清楚布尔表达式i < argc是什么。在学习while循环之前,让我先来对布尔表达式做一些解释。

笨办法学C 练习10:字符串数组和循环

2016-04-13
阅读 2 分钟
1.6k
你现在可以创建不同类型的数组,并且也知道了“字符串”和“字节数组”是相同的东西。接下来,我们要更进一步,创建一个包含字符串的数组。我也会介绍第一个循环结构,for循环来帮我们打印出这一新的数据结构。

笨办法学C 练习9:数组和字符串

2016-04-12
阅读 3 分钟
1.5k
上一个练习中,我们学习了如何创建基本的数组,以及数组怎么样映射为字符串。这个练习中我们会更加全面地展示数组和字符串的相似之处,并且深入更多内存布局的知识。

笨办法学C 练习8:大小和数组

2016-04-12
阅读 3 分钟
1.6k
在上一个练习中你做了一些算术运算,不过带有'\0'(空)字符。这对于其它语言来说非常奇怪,因为它们把“字符串”和“字节数组”看做不同的东西。但是C中的字符串就是字节数组,并且只有不同的打印函数才知道它们的不同。

笨办法学C 练习7:更多变量和一些算术

2016-04-10
阅读 2 分钟
1.6k
你可以通过声明int,float,char和double类型的变量,来对它们做更多的事情,让我们来熟悉它们吧。接下来我们会在各种数学表达式中使用它们,所以我会向你介绍C的基本算术操作。

笨办法学C 练习6:变量类型

2016-04-10
阅读 2 分钟
1.5k
练习6:变量类型 原文:Exercise 6: Types Of Variables 译者:飞龙 你应该掌握了一个简单的C程序的结构,所以让我们执行下一步简单的操作,声明不同类型的变量。 {代码...} 在这个程序中我们声明了不同类型的变量,并且使用了不同的printf格式化字符串来打印它们。 你会看到什么 你的输出应该和我的类似,你可以看到C的...

笨办法学C 练习5:一个C程序的结构

2016-04-09
阅读 2 分钟
1.5k
你已经知道了如何使用printf,也有了可以随意使用的一些工具,现在让我们逐行分析一个简单的C程序,以便你了解它是如何组织的。在这个程序里你会编写一些不是很熟悉的东西,我会轻松地把它们拆开。之后在后面的几章我们将会处理这些概念。

笨办法学C 练习4:Valgrind 介绍

2016-04-09
阅读 5 分钟
2.6k
现在是介绍另一个工具的时间了,在你学习C的过程中,你会时时刻刻用到它,它就是 Valgrind。我现在就向你介绍 Valgrind,是因为从现在开始你将会在“如何使它崩溃”一节中用到它。Valgrind是一个运行你的程序的程序,并且随后会报告所有你犯下的可怕错误。它是一款相当棒的自由软件,我在编写C代码时一直使用它。

推荐一些系统方面的书

2016-04-05
阅读 1 分钟
2.1k
由于前几年研究逆向,把系统方向的书几乎找了一遍。我挑出来一些不错的书推荐给大家。 书名 涉及范围 csapp 数据表示、汇编、处理器、cache、虚拟地址、链接、进程、信号、线程、底层IO、套接字 apue 进程、信号、线程、底层IO、文件系统、套接字 linux c 一站式学习 c语言、数据结构、数据表示、线程、套接字 程序员的...

笨办法学C 练习3:格式化输出

2016-04-02
阅读 2 分钟
1.5k
练习3:格式化输出 原文:Exercise 3: Formatted Printing 译者:飞龙 不要删除Makefile,因为它可以帮你指出错误,以及当我们需要自动化处理一些事情时,可以向它添加新的东西。 许多编程语言都使用了C风格的格式化输出,所以让我们尝试一下: {代码...} 写完之后,执行通常的make ex3命令来构建并运行它。一定要确保你...

笨办法学C 练习2:用Make来代替Python

2016-04-01
阅读 2 分钟
2.7k
在Python中,你仅仅需要输入python,就可以运行你想要运行的代码。Python的解释器会运行它们,并且在运行中导入它所需的库和其它东西。C是完全不同的东西,你需要事先编译你的源文件,并且手动将它们整合为一个可以自己运行的二进制文件。手动来做这些事情很痛苦,在上一个练习中只需要运行make就能完成。

笨办法学C 练习1:启用编译器

2016-03-27
阅读 1 分钟
2.9k
练习1:启用编译器 原文:Exercise 1: Dust Off That Compiler 译者:飞龙 这是你用C写的第一个简单的程序: {代码...} 把它写进 ex1.c 并输入: {代码...} 你的编译器可能会使用一个有些不同的命令,但是最后应该会产生一个名为ex1的文件,并且你可以运行它。 你会看到什么 现在你可以运行程序并看到输出。 {代码...} ...

Numpy 中文用户指南 3.2 创建数组

2016-03-25
阅读 2 分钟
3.2k
原文:Array creation 译者:飞龙 ‍ 另见 数组创建例程 导言 数组创建的一般机制有五种: 从其它Python的结构转换(如列表和元组) 内置的NumPy数组创建对象(如 arange, ones, zeros以及其它) 从磁盘中读取标准或自定义格式的数据 通过使用字符串或者缓冲区,从原始的字节创建数组 使用特殊的库函数(比如random) 本...

Numpy 中文用户指南 2. 快速启动

2016-03-24
阅读 26 分钟
3.8k
原文:Quickstart tutorial 译者:Reverland 来源:试验性NumPy教程(译) 2.1 先决条件 在阅读这个教程之前,你多少需要知道点python。如果你想重新回忆下,请看看Python Tutorial. 如果你想要运行教程中的示例,你至少需要在你的电脑上安装了以下一些软件: Python NumPy 这些是可能对你有帮助的: ipython是一个净强化的...

Numpy 中文用户指南 3.1 数据类型

2016-03-24
阅读 3 分钟
15.8k
原文:Data types 译者:飞龙 ‍ 另见 数据类型对象 数组类型和类型之间的转换 NumPy支持的数值类型比Python更多。这一节会讲述所有可用的类型,以及如何改变数组的数据类型。 数据类型 描述 bool_ 以字节存储的布尔值(True 或 False) int_ 默认的整数类型(和 C 的 long 一样,是 int64 或者 int32) intc 和 C 的 int...

Numpy 中文用户指南 1. 安装

2016-03-21
阅读 2 分钟
3k
NumPy是Python中用于科学计算的基础包。它是一个Python库,提供多维数组对象,各种派生的对象(如掩码数组和矩阵),以及数组快速操作的各种各样的例程,包括数学、逻辑、图形操作,排序、选择、I/O、离散傅里叶变换、基本线性代数、基本统计操作,随机模拟以及其他。

计算机开放电子书汇总

2016-03-15
阅读 4 分钟
5.7k
开放书是指协议为Public Domain、Creative Common,以及一些开源软件协议(MIT、Apache、GPL等等)的图书。我在平时逛论坛或者刷github时,看到好的开放电子书时会将链接存到博客的某个页面上。但是链接一多起来,查找就特别不方便,于是就单独做了这样一个网站。

C++参考的翻译或校对

2016-02-08
阅读 1 分钟
1.6k
做新年规划的时候,我说过要翻译C++常用类的参考。C++的参考,其实别人已经翻译完了,只是部分内容需要校对。由于网站结构中大量使用了模板,同一个函数只需要翻译一个地方,所以四天就弄完了。而且我没有翻译函数层级的页面,所以比较快。

C++ 现代编程风格速查表

2016-01-20
阅读 2 分钟
2.6k
栈上数组 {代码...} {代码...} 堆上数组 {代码...} {代码...} 字符串 {代码...} {代码...} 指向栈的指针 {代码...} {代码...} 堆上对象 {代码...} {代码...} 函数指针 {代码...} {代码...} 函数对象 {代码...} {代码...} 宏定义常量 {代码...} {代码...} 宏定义类型 {代码...} {代码...} 宏定义函数 {代码...} {代码...}...