C语言编程——零基础初学者指南(第3版)

978-7-115-34041-2
作者: 【美】Greg Perry Dean Miller
译者: 姜佑
编辑: 傅道坤
分类: C语言

图书目录:

详情

本书为读者讲解了C语言的所有基础知识,比如如何组织一个程序,如何存储、显示数据,以及处理变量、操作符、I/O、指针、数组和函数等内容,还讲解了用于Windows、OS X和Linux的C编译器知识,以及用于移动开发和游戏开发的相关知识。此外,本书还涵盖了最新的C11标准。本书适合C语言初学者、编程爱好者,以及高校学生阅读。

图书摘要

版权信息

书名:C语言编程——零基础初学者指南(第3版)

ISBN:978-7-115-34041-2

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

• 著    [美]Greg Perry Dean Miller

  译    姜 佑

  责任编辑 傅道坤

• 人民邮电出版社出版发行  北京市丰台区成寿寺路11号

  邮编 100164  电子邮件 315@ptpress.com.cn

  网址 http://www.ptpress.com.cn

• 读者服务热线:(010)81055410

  反盗版热线:(010)81055315


Greg Perry , Dean Miller: C Programming Absolute Beginner’s Guide(3rd Edition)

Copyright © 2014 Pearson Education, Inc.

ISBN: 978-0789751980

All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise without the prior consent of Addison Wesley.

版权所有。未经出版者书面许可,对本书任何部分不得以任何方式或任何手段复制和传播。

本书中文简体字版由人民邮电出版社经Pearson Education, Inc.授权出版。版权所有,侵权必究。

本书封面贴有Pearson Education(培生教育出版集团)激光防伪标签。无标签者不得销售。


本书是C语言的入门教材,针对没有任何编程经验的零基础初学者,详细介绍了C语言入门需要掌握的基础知识。全书分为五部分共32章,第一部分(第1~第8章)初识C语言,介绍C程序设计的基础概念,如程序、注释、变量、字符串等内容;第二部分(第9~第13章)运算符和表达式,介绍C语言的各种运算符和运算规则;第三部分(第14~第20章)控制程序,通过循环介绍C语言如何控制程序的执行顺序;第四部分(第21~第27章)管理C程序的数据,介绍什么是指针、如何处理数组、如何查找和排序数据、如何使用堆;第五部分(第28~第32章)文件和函数,介绍如何打开文件、如何在函数间传递变量。本书包含大量完整的代码示例,注释详尽,讲解通俗易懂。让每个C语言的新手都能轻松愉快地学习入门基础知识。

本书适合C语言的初学者作为入门教程,也可供对C语言感兴趣的新手及大专院校师生作为参考读物。


Greg Perry是一位演讲家,同时也是程序设计和计算应用方面的作者。Perry有20多年的编程和培训经验,主要针对初学者水平教授编程方面的基础。Perry获得第一个计算机科学学士学位后,还获得了企业金融硕士学位。在写作之余,他还进行咨询和讲座,参与各类软件开发编程会议。Perry撰写的计算机书籍超过75本。他在闲暇之余,还到意大利旅游并应邀演讲。

Dean Miller是一位在出版和授权消费产品业务方面有20多年经验的作者兼编辑。期间,他策划并推出了大量畅销书籍和系列,包括Teach Yourself in 21 DaysTeach Yourself in 24 Hours以及Unleashed系列,这些都由Sam出版社出版。除此之外,他还著有C程序设计和职业摔跤方面的书籍,并总能将两者微妙地结合起来。


本书献给我的妻子兼最好的朋友,Fran Hatton。她总是鼓励我去实现自己的梦想,在我职业生涯的转折点在背后坚定不移地支持我。


Greg:非常感谢Pearson出版社的朋友们。绝大多数作者都称他们为编辑,但是对我而言,他们是我的朋友。在这里,我要告诉所有的读者:Pearson出版社的所有员工都非常关心你们。他们所做的一切都是为了读者在阅读的过程中,能愉快地学到知识。

以个人名义感谢我美丽的新娘Jayne、我的母亲Bettye Perry和所有支持我写作的朋友们,他们很好奇我哪有那么多时间写作。

Dean:感谢Mark Taber让我来做这个项目。很高兴10年后又回到本职工作上,开始了我的计算机图书出版职业生涯。感谢Greg Perry在本书第1版和第2版中的出色之作。很荣幸在本书第1版和第2版时以编辑的身份与他共事,更荣幸在第3版与他共著此书。非常感激编校团队Mandie Frank、Krista Hansing和Pearson出版社的制作团队为本书倾心尽力。

以个人名义感谢我的3个孩子John、Alice和Maggie,非常感谢我的妻子Fran对我的耐心和支持。


前言内容

看到朋友们都找到了合适的C语言编程工作,而自己却吃着闭门羹?很想学习C语言,却缺乏持续的动力?想用热门的程序设计语言给老旧不堪的电脑进行热身?本书就是你所需要的!

本书打破一般计算机书籍居高临下的说教方式,根据读者自身的程度循序渐进地讲解知识要点。它就像是读者的好朋友,坐在身旁教你C语言,用平实简单的语言而非“计算机行话”,让读者在轻松愉快的气氛中学习。与市面上的其他书籍相比,本书精练的章节、生动的插图和幽默风趣的行文,助读者更快速、更友好、更轻松地拨开C程序设计的迷雾。

这是一本为新手准备的入门书,适合没有任何编程经验的初学者阅读。读者不需要具备任何编程的概念,即使从未写过一行代码,也可以通过本书学习C语言程序设计。

零基础初学者,在不同的情况下有不同的含义。许多相关的书籍和课程都将C语言作为一门技术性含量很高的语言来学习,也许你曾经学过C语言,但放弃了;也许你有其他语言的编程经验,但是第一次接触C语言。如果是这样,本书就是你最佳的选择。经过32章的学习,你一定会对C语言有所了解。

本书不会用深奥难懂的内部技术细节吓倒C语言的初学者。我们坚信,应该耐心细致地帮助初学者学好基本概念。在夯实基础后,理解“更困难”的部分会容易些。本书将告诉读者,什么才是初学者应该掌握的C语言入门知识。

C语言可以说是一门非常神秘而难懂的语言,许多人尝试多次学习都未果。其实,问题很简单:如果能作适当地解释,任何一门学科(无论是脑外科、邮件分类,还是C语言编程)都不难。师傅领进门,学艺靠自身。只有自己下功夫才能真正学到知识。但是,如果指导学习的教师、书籍,或视频在教学过程中过于沉闷死板、毫无乐趣,就无法调动学生的学习积极性。

本书提供的学习方法特别适合零基础的初学者学习C语言,但是他山之石,可以攻玉。如果读者发现了比本书更简单易懂的教学方法,请联系我们,我们会第一时间研读一番(你也许认为我们会退款?)。言归正传,本书为初学者开辟了一条与众不同的学习之路,竭尽全力地帮助初学者打好基础。

本书最大的优势在于,我们不仅非常热爱C语言编程,而且更热衷于教C语言。我们坚信,读者会在学习中爱上C语言。

与其他计算机书籍一样,本书包含了许多有用的提示、注意、警告等。我们在读者需要特别注意的地方,都做了补充说明。读者在阅读过程中,会发现很多特别的图标和边栏。

提示 

本书中的许多技巧和小窍门都以此图标提醒读者注意。该部分内容包含一些语言特性和编写代码的技巧,指导读者如何加以利用。

注意 

在C语言中,需要对某些主题进行更深层次的理解。该图标提醒读者注意一些可能没有考虑的部分,例如正在讨论的主题有一个新的用法。

警告 

该图标指出正在讨论的内容中可能会出现潜在的问题。它表明读者要多加留意或提供一个妥善的解决方案。

本书每章开头都有“本章内容”的预览,每章末尾都为读者归纳了本章必须掌握的知识要点,“本章小结”部分是本书的特色之一,将每章的重要知识点放在一起,方便读者记忆。

本书使用的排版风格如下:

附录B中的“Draw Poker扑克游戏”是一个完整的程序。该程序在不牺牲代码可读性和游戏功能的前提下,尽可能短小精悍。为了让该游戏能在所有的C编译器中成功运行,游戏中不会出现精美的图案。但是,随着深入学习C语言,读者可以通过编译器轻松地加入各种特定的图形、声音和数据输入例程来改进程序。

该程序占了本书十几页的篇幅,正文中会介绍一些与Draw Poker扑克游戏程序相关的内容。市面上绝大部分书籍都只提供代码的片段,本书提供了每章程序示例和Draw Poker扑克游戏程序的完整代码,能让你掌握该游戏的设计大局。随着学习的深入,读者会越来越了解这个游戏。

请翻开下一页,开始学习C语言吧!

[1] 译者注:格式行中的占位符译文用斜楷体



本章内容

许多人都认为C语言难学难用,不过你很快会发现事实并非如此。C语言被认为是一门神秘的程序设计语言,它的确可以成为这样的语言。但是,具有良好编程风格的C语言程序,也可以像其他程序设计语言编写的程序一样,简单易懂。当今社会对程序员和开发者的要求越来越高,学习C语言为进入各个领域(如,应用开发、游戏编程等)打下了坚实而有效的基础。

如果你从未编写过程序,不用担心,本章将从最基本的编程概念开始介绍,解释什么是程序,并简要介绍C语言的历史。C语言是一门功能强大的程序设计语言。

计算机并不聪明。信不信由你,即使在你状态最糟糕的时候,你的智力也绝对超过计算机好几光年。你可以独立思考,告诉计算机要做什么。当然,计算机也有自己的专长:它服从你的指令。而且,计算机可以不知疲倦、不计报酬、日以继夜地处理你提供的数据。

计算机无法自己决定做什么,它不能独立思考,因此程序员(告诉计算机应该做什么的人)必须给计算机提供非常详细的指令。没有指令,计算机将一无是处,但是给予错误的指令,它也无法成功地执行你分配的任务。正如汽车无法自己启动并行驶在街区上,没有详细的指令,计算机也无法处理你的工资单。为了让计算机执行某项具体的任务而提供的详细指令集称为程序program)。

注意  

字处理软件、应用程序、电子制表软件和电脑游戏都是计算机程序。脸谱(Facebook)也是程序的集合。没有这些程序,计算机只能无所事事地呆在那里,不知道下一步要做什么。字处理程序包含一系列详细指令(用计算机语言编写,如C语言),告诉计算机如何处理文字。当你编写程序时,就是在告诉计算机,要按照你所写程序中的指令来执行。

你可以为计算机、平板电脑、手机等购买或下载各种程序。但是,如果公司因业务需要,必须使用计算机来执行某些具体的任务,那么该公司就要请程序员和软件开发人员,根据公司的具体业务需求开发软件。虽然用计算机或移动设备可以做许多事情,但是现有的程序可能无法满足你的具体要求。本书将助你摆脱进退两难的困境。学习C语言后,你可以编写包含各种指令的程序,告诉计算机如何执行程序。

提示 

计算机程序告诉计算机如何按你期望的方式执行任务。正如厨师做菜需要食谱,程序需要指令才能生成结果。食谱就相当于一系列的指令集,如果编写得当,执行顺序合理,每一步骤需要的食材准备充分,就能烹饪出可口的饭菜。对于计算机而言,程序就相当于厨师的食谱。

运行run)或执行execute)程序时,会生成输出output)。如果将做好的菜看作是食谱的输出,那么字处理软件或应用程序就是运行程序生成的输出。

警告 

如果厨师在烹饪过程中放错食材或跳过食谱中必要的步骤,做出的菜一定不太美味。与此类似,如果输入错误或跳过某一步骤,你的程序将无法运行。

在计算机上编写并执行C语言程序之前,需要一个C编译器C compiler)。C编译器用于创建build)或编译compile)C程序(编译是一个技术术语,指将程序转换为计算机可读的内容),让你在需要查看结果时可以运行已编译的程序。现在有许多非常优秀且免费的软件包,可以用它们来编辑并编译你的C程序。通过网络搜索即可找到诸多这样的软件。本书使用的是Code::Blocks(www.codeblocks.org)。

提示 

如果在搜索引擎中查找“C Programming Compilers”,会搜索出许多免费的软件,其中包括Borland和Microsoft提供的。但是,为什么本书使用Code::Blocks?因为它为各种操作系统(Windows、Macs和Linux)提供了不同的版本,无论你用什么操作系统都可以使用Code::Blocks。

如果你正打开Code::Blocks的主页,阅读网站的第一行,可能会有些担心:

The open source, cross platform, free C++ IDE.

(开源、跨平台、免费的C++集成开发环境)

开源open source)指的是用户可以更换或改进软件的代码(现在想这样做尚早,暂时将其放在一边)。跨平台cross platform)意味着该软件可以在不同的操作系统上运行。作为初学者,只需要关注自己所使用的平台即可。免费free),不言自明。IDE集成开发环境integrated development environment)的缩写,这意味着可以用其编写、编辑和调试程序,不需要切换其他软件。我们很快就会接触到调试。

不要因为看见C++而担忧。在Code::Blocks中,既能编写C程序也能编写C++程序。目前,要找到一个纯正的C编译器比较困难。因为C编译器都会附带C的更高级版本,即C++。因此,在寻找C编译器的同时,你会发现它一定是C和C++组合的编译器,而且一般都会强调C++的功能。这非常不错,在学习C语言后,你已经有一个C++编译器。等将来学习C++,就不用再去学习新IDE的输入和输出。

Code::Blocks的主页,如图1.1所示。要下载C/C++集成开发环境,只需单击页面左侧主菜单中的“Downloads”选项即可。

图1.1 Code::Blocks的主页(请留意“Downloads”选项)

在选择“Downloads”选项后,将弹出另一个页面,对3个选项作进一步讨论:Binary、Source和SVN。后两个是高级选项,初学者可以忽略。请单击“Download the binary release”即可。

注意 

安装时需注意两点。第一,本书的屏幕截图与你在互联网上所见的主页可能稍有不同——Code::Blocks会不断更新软件,其版本号会不断增加。我在编写本书时使用的Code::Blocks版本号为10.05,但是出版前最后核实,其版本号已更新至12.11。在你拿到本书时,版本号可能会更大。第二,如果你是Windows用户,确保你下载的是较大的文件(标题中有mingw)。这个版本包含测试工具,在你成为资深C语言程序员时会用得上。

下一页显示的各选项,依操作系统而异。如果选择Windows选项,请继续选择第二个选项,如图1.2所示。这样即可下载完整的编译器和调试器,迟早用得上。

图1.2 选择Windows集成开发环境下载(可选择任意一个下载源进行下载)

在确定开始下载后,可以去干点别的(找点东西吃)——下载的文件较大,下载时间依你的网速而定。下载完成后,点击文件并接受所有默认设置(只有资深的程序员才会根据自己的需要进行安装)。很快,就能在计算机上运行Code::Blocks了。退出“每日提示”(Tip of the Day),并将Code::Blocks相关的程序都设置为.c和.cpp文件后,才能关闭文本窗口。此时,屏幕上显示的是该软件的视窗,如图1.3所示。

图1.3 欢迎来到编程之家

注意 

你编写的C程序叫作源代码(source code)。编译器将C源代码翻译成机器语言(machine language)。计算机由成千上万的电路开关(开或者关)组成。因此,计算机最终的指令必须是二进制(binary),前缀bi-代表“二”。电路的两种状态被称为二进制状态(binary state)。用C编译器将C程序转换为10(表示内部的开或关的设置),比你亲自愚公移山要容易得多。

绝大多数程序员在编写程序时,都按照以下几个基本步骤进行。

1.确定程序要做什么。

2.使用编辑器editor)编写并保存你的程序设计语言指令。编辑器类似于文字处理软件,可以创建和编辑文本。所有流行的C编译器都包含一个集成编辑器和程序设计语言编译器。所有的C程序文件名都以 .c扩展名结束。

3.编译程序。

4.检查程序错误。如果出现错误,将其逐一修复并返回步骤3。

5.执行程序。

注意 

计算机程序中的错误被称为bug,处理错误称为调试(debug)程序。

花点时间学习Code::Blocks或你安装在计算机上的其他编译器。功能强大的IDE使用统一的菜单,让你在相同的环境下轻松完成以上5个步骤。在编译程序、查看错误、修复错误、运行程序、查看结果时,无需切换界面。

警告 

对于从未编写过程序的新手,可能不太理解上述内容。别紧张,现在绝大多数C编译器都有内置教程,你可以通过阅读教程学习编译器、编辑器和编译命令的基本知识。

如果你仍然不理解为什么需要编译器,可以这样想:源代码就像是计算机需要的原材料,编译器就像是将原材料转变成最终产品的机器。计算机只能看懂经过编译的程序。

C语言比绝大多数程序设计语言效率更高,同时它也是一门小型的程序设计语言。也就是说,需要学习的C命令command)并不多。通过本书的学习,你将掌握C命令和C语言的其他要素(如,运算符、函数和预处理指令等)。

C语言发展至今,经过了很多版本的修订。美国国家标准学会(ANSI)委员会为C语言的所有版本制定了一系列规则(称为ANSI C)。如果用ANSI C编译器能编译某个程序,就能保证所有安装ANSI C编译器的计算机都能编译该C程序。

提示 

1983年,ANSI创立的X3J11委员会建立了一个C语言的标准版本,称为ANSI C。在2011年采用了ANSI C的最新版本——C11

如果你编译了一个C程序,那么无论其他计算机是否安装了ANSI C编译器,只要与你的计算机兼容,就能运行这个C程序。你可能会说:“太棒了!但是,我连第一个C程序都不会写,哪懂编译、运行。”别急,在第2章中,我们会一步一步地教你如何编写C语言程序。

本章小结

本章介绍了C程序设计语言,帮助读者选择一个编译器编辑、调试和运行程序。

要牢记以下几点。


相关图书

代码审计——C/C++实践
代码审计——C/C++实践
C/C++代码调试的艺术(第2版)
C/C++代码调试的艺术(第2版)
大规模C++软件开发 卷1:过程与架构
大规模C++软件开发 卷1:过程与架构
C/C++程序设计竞赛真题实战特训教程(图解版)
C/C++程序设计竞赛真题实战特训教程(图解版)
C/C++函数与算法速查宝典
C/C++函数与算法速查宝典
C程序设计教程(第9版)
C程序设计教程(第9版)

相关文章

相关课程