如何学习 C 语言?

article/2025/11/6 17:23:51

在线资源

C程序员帮助建立了互联网,而互联网可以帮助你学习C。互联网时刻都在发展、变化,这里所列的资源只是在撰写本书时可用的资源。当然,你可以在互联网中找到其他资源。

如果有一些与C语言相关的问题或只是想扩展你的知识,可以浏览C FAQ(常见问题解答)的站点:

c-faq.com

但是,这个站点的内容主要涵盖到C89。

如果对C库有疑问,可以访问这个站点获得信息:www.acm.uiuc.edu/webmonkeys/book/c_guide/index.html。

这个站点全面讨论指针:pweb.netcom.com/~tjensen/ptr/pointers.htm。

还可以使用谷歌和雅虎的搜索引擎,查找相关文章和站点:

www.google.com

search.yahoo.com

www.bing.com

可以使用这些站点中的高级搜索特性来优化你要搜索的内容。例如,尝试搜索C教程。

你可以通过新闻组(newsgroup)在网上提问。通常,新闻组阅读程序通过你的互联网服务提供商提供的账号访问新闻组。另一种访问方法是在网页浏览器中输入这个地址:http://groups.google.com。

你应该先花时间阅读新闻组,了解它涵盖了哪些主题。例如,如果你对如何使用C语言完成某事有疑问,可以试试这些新闻组:

comp.lang.c

comp.lang.c.moderated

可以在这里找到愿意提供帮助的人。你所提的问题应该与标准C语言相关,不要在这里询问如何在UNIX系统中获得无缓冲输入之类的问题。特定平台都有专门的新闻组。最重要的是,不要询问他们如何解决家庭作业中的问题。

如果对C标准有疑问,试试这个新闻组:comp.std.c。但是,不要在这里询问如何声明一个指向三维数组的指针,这类问题应该到另一个新闻组:comp.lang.c。

最后,如果对C语言的历史感兴趣,可以浏览下C创始人Dennis Ritchie的站点,其中1993年中有一篇文章介绍了C的起源和发展:cm.bell-labs.com/cm/cs/who/dmr/chist.html。

C语言书籍

C Primer Plus(第6版)中文版

程序员的C语言启蒙教程,专为零基础读者撰写。中文版累计80万册,众多新手通过自学,已在各大技术公司担任要职。这本书在技术细节、技术广度、深度,以及讲解方式等是针对自学用户设计的。

为了让读者更好地吸收知识,本书采用螺旋式方法,先在前几个章节中介绍一些主题,在后面章节再详细讨论相关内容。例如,对学习C语言而言,理解函数至关重要。因此,我们在前几个章节中安排一些与函数相关的内容,等读者学到第9章时,已对函数有所了解,学习使用函数会更加容易。与此类似,前几章还概述了一些字符串和循环的内容。这样,读者在完全弄懂这些内容之前,就可以在自己的程序中使用这些有用的工具。

每章末尾的复习题和编程练习题进一步强化了*重要的信息,有助于读者理解和消化那些难以理解的概念。本书采用了友好、易于使用的编排方式,不仅适合打算认真学习C语言编程的学生阅读,也适合那些精通其他编程语言,但希望更好地掌握C语言这门核心语言的开发人员阅读。
《C Primer Plus(第6版)中文版》在之前版本的基础之上进行了全新升级,它涵盖了C语言*新的进展以及C11标准的详细内容。本书还提供了大量深度与广度齐备的教学技术和工具,来提高你的学习。

详细完整地讨论了C语言的基础特性和附加特性;

  • 清晰解释了使用C语言不同部分的时机,以及原因;
  • 通过简洁、简单的示例加强读者的动手练习,以帮助一次理解一两个概念;
  • 囊括了数百个实用的代码示例;
  • 每章末尾的复习题和编程练习可以检测你的理解情况。
  • 涵盖了C泛型编程,以提供*大的灵活性。

使用C语言的7个步骤

C是编译型语言。如果之前使用过编译型语言(如,Pascal或FORTRAN),就会很熟悉组建C程序的几个基本步骤。但是,如果以前使用的是解释型语言(如,BASIC)或面向图形界面语言(如,Visual Basic),或者甚至没接触过任何编程语言,就有必要学习如何编译。别担心,这并不复杂。首先,为了让读者对编程有大概的了解,我们把编写C程序的过程分解成7个步骤(见图1.3)。注意,这是理想状态。在实际的使用过程中,尤其是在较大型的项目中,可能要做一些重复的工作,根据下一个步骤的情况来调整或改进上一个步骤。

图1.3 编程的7个步骤

第1步:定义程序的目标

在动手写程序之前,要在脑中有清晰的思路。想要程序去做什么首先自己要明确自己想做什么,思考你的程序需要哪些信息,要进行哪些计算和控制,以及程序应该要报告什么信息。在这一步骤中,不涉及具体的计算机语言,应该用一般术语来描述问题。

第2步:设计程序

对程序应该完成什么任务有概念性的认识后,就应该考虑如何用程序来完成它。例如,用户界面应该是怎样的?如何组织程序?目标用户是谁?准备花多长时间来完成这个程序?

除此之外,还要决定在程序(还可能是辅助文件)中如何表示数据,以及用什么方法处理数据。学习C语言之初,遇到的问题都很简单,没什么可选的。但是,随着要处理的情况越来越复杂,需要决策和考虑的方面也越来越多。通常,选择一个合适的方式表示信息可以更容易地设计程序和处理数据。

再次强调,应该用一般术语来描述问题,而不是用具体的代码。但是,你的某些决策可能取决于语言的特性。例如,在数据表示方面,C的程序员就比Pascal的程序员有更多选择。

第3步:编写代码

设计好程序后,就可以编写代码来实现它。也就是说,把你设计的程序翻译成C语言。这里是真正需要使用C语言的地方。可以把思路写在纸上,但是最终还是要把代码输入计算机。这个过程的机制取决于编程环境,我们稍后会详细介绍一些常见的环境。一般而言,使用文本编辑器创建源代码文件。该文件中内容就是你翻译的C语言代码。程序清单1.1是一个C源代码的示例。

程序清单1.1 C源代码示例

#include <stdio.h>
int main(void)
{int dogs;printf("How many dogs do you have?\n");scanf("%d", &dogs);printf("So you have %d dog(s)!\n", dogs);return 0;
}

在这一步骤中,应该给自己编写的程序添加文字注释。最简单的方式是使用C的注释工具在源代码中加入对代码的解释。第2章将详细介绍如何在代码中添加注释。

第4步:编译

接下来的这一步是编译源代码。再次提醒读者注意,编译的细节取决于编程的环境,我们稍后马上介绍一些常见的编程环境。现在,先从概念的角度讲解编译发生了什么事情。

前面介绍过,编译器是把源代码转换成可执行代码的程序。可执行代码是用计算机的机器语言表示的代码。这种语言由数字码表示的指令组成。如前所述,不同的计算机使用不同的机器语言方案。C编译器负责把C代码翻译成特定的机器语言。此外,C编译器还将源代码与C库(库中包含大量的标准函数供用户使用,如printf()scanf())的代码合并成最终的程序(更精确地说,应该是由一个被称为链接器的程序来链接库函数,但是在大多数系统中,编译器运行链接器)。其结果是,生成一个用户可以运行的可执行文件,其中包含着计算机能理解的代码。

编译器还会检查C语言程序是否有效。如果C编译器发现错误,就不生成可执行文件并报错。理解特定编译器报告的错误或警告信息是程序员要掌握的另一项技能。

第5步:运行程序

传统上,可执行文件是可运行的程序。在常见环境(包括Windows命令提示符模式、UNIX终端模式和Linux终端模式)中运行程序要输入可执行文件的文件名,而其他环境可能要运行命令(如,在VAX中的VMS[2])或一些其他机制。例如,在Windows和Macintosh提供的集成开发环境(IDE)中,用户可以在IDE中通过选择菜单中的选项或按下特殊键来编辑和执行C程序。最终生成的程序可通过单击或双击文件名或图标直接在操作系统中运行。

第6步:测试和调试程序

程序能运行是个好迹象,但有时也可能会出现运行错误。接下来,应该检查程序是否按照你所设计的思路运行。你会发现你的程序中有一些错误,计算机行话叫作bug。查找并修复程序错误的过程叫调试。学习的过程中不可避免会犯错,学习编程也是如此。因此,当你把所学的知识应用于编程时,最好为自己会犯错做好心理准备。随着你越来越老练,你所写的程序中的错误也会越来越不易察觉。

将来犯错的机会很多。你可能会犯基本的设计错误,可能错误地实现了一个好想法,可能忽视了输入检查导致程序瘫痪,可能会把圆括号放错地方,可能误用C语言或打错字,等等。把你将来犯错的地方列出来,这份错误列表应该会很长。

看到这里你可能会有些绝望,但是情况没那么糟。现在的编译器会捕获许多错误,而且自己也可以找到编译器未发现的错误。在学习本书的过程中,我们会给读者提供一些调试的建议。

第7步:维护和修改代码

创建完程序后,你发现程序有错,或者想扩展程序的用途,这时就要修改程序。例如,用户输入以Zz开头的姓名时程序出现错误、你想到了一个更好的解决方案、想添加一个更好的新特性,或者要修改程序使其能在不同的计算机系统中运行,等等。如果在编写程序时清楚地做了注释并采用了合理的设计方案,这些事情都很简单。

说明

编程并非像描述那样是一个线性的过程。有时,要在不同的步骤之间往复。例如,在写代码时发现之前的设计不切实际,或者想到了一个更好的解决方案,或者等程序运行后,想改变原来的设计思路。对程序做文字注释为今后的修改提供了方便。

许多初学者经常忽略第1步和第2步(定义程序目标和设计程序),直接跳到第3步(编写代码)。刚开始学习时,编写的程序非常简单,完全可以在脑中构思好整个过程。即使写错了,也很容易发现。但是,随着编写的程序越来越庞大、越来越复杂,动脑不动手可不行,而且程序中隐藏的错误也越来越难找。最终,那些跳过前两个步骤的人往往浪费了更多的时间,因为他们写出的程序难看、缺乏条理、让人难以理解。要编写的程序越大越复杂,事先定义和设计程序环节的工作量就越大。

磨刀不误砍柴工,应该养成先规划再动手编写代码的好习惯,用纸和笔记录下程序的目标和设计框架。这样在编写代码的过程中会更加得心应手、条理清晰。

如果你还想在编程的路上继续提高,那我建议你至少学习4种编程语言。如果你已经学过了一种,现在又学会了C,那么我建议你接着试试下面这些语言。

  • Python,你可以用我的书《“笨办法”学Python(第3版)》(Learn Python The Hard Way, Third Edition)(Addison-Wesley,2014)。
  • Ruby,你可以用我的书《“笨办法”学Ruby(第3版)》(Learn Ruby The Hard Way, Third Edition)(Addison-Wesley,015)。
  • Go,使用http://golang.org/doc的官方文档学习。这门语言也是C语言的作者们写的,实话讲,比C语言强多了。
  • Lua,挺有趣的一门编程语言,有着不错的C语言API,没准儿你会喜欢。

可用的编程语言有很多,所以选择一种感兴趣的学习就可以了。我这么建议的原因是,要掌握编程,建立信心,提高能力,最简单的办法就是学习多种编程语言。4种语言应该是从初学者到有能力的程序员的一个突破点。另外学习多种编程语言本来就是一件很有趣的事情。


http://chatgpt.dhexx.cn/article/S3WGI5rn.shtml

相关文章

关于学好C语言的心得

一.工欲善其事&#xff0c;必先利其器 选择visual sudio 2019 原因&#xff1a;1.vs2019是集成开发环境&#xff0c;对新手友好&#xff0c;不需要配置环境&#xff0c;上手就可以使用 2.大部分网课教程都在使用&#xff0c;避免产生冲突 下载网址&#xff1a;Visual Studio 产…

c语言学的是什么,C语言怎么学?

计算机有一种专业叫c语言&#xff0c;那么什么是c语言&#xff0c;怎么去学它&#xff1f;能给我们带来什么&#xff1f;这篇文章主要是针对此内容做一讲解&#xff01; c语言是一种电脑程序设计语言。它有高级语言的特点&#xff0c;也有整编语言的特征。可以作为系统设计和应…

为什么要学好c语言,c语言到底多重要,你造吗

一、前言 对于理工 科学生来说&#xff0c;这个答案可能很简单&#xff0c;因为这是一门必修课。而对于程序员来说选择一门编程语言&#xff0c;在某种程度上&#xff0c;对职业生涯的发展会产生重大的影响&#xff0c;所以必须慎 之又慎。那么&#xff0c;为什么要选择一门诞…

零基础如何学好C语言?

经常有人会这样问"我没有一点基础&#xff0c;该如何入门C语言&#xff0c;该如何学好C语言 ?"看到很多初学者摸不到门路&#xff0c;我在这里制定了相应的学习计划&#xff0c;对于零基础新手一定会有很大的帮助。 很多新手认为学习C语言离不开记忆语法&#xff0c…

怎样学习C语言?

一 、怎样学习C语言 很多人对学习C语言感到无从下手&#xff0c;经常问我同一个问题&#xff1a;究竟怎样学习C语言&#xff1f;我是一个教师&#xff0c;已经开发了很多年的程序&#xff0c;和很多刚刚起步的人一样&#xff0c;学习的第一个计算机语言就是C语言。 经过这些年的…

如何学好C语言--你的学渣朋友告诉你

光说不练假把式,光练不说傻把式,又练又说真把式。 真实感受&#xff0c;不是我不想学&#xff0c;是我真的不知道我哪里不会啊和得怎么做啊&#xff1f;本文作者当初就是这么废掉的 推荐两个练习的网站 &#xff08;一&#xff09;C语言网 https://www.dotcpp.com/ 水题基…

学好C语言,你只需要这几句口诀!

学好C语言的秘诀就是1234&#xff1a;“一字真言&#xff0c;两种态度&#xff0c;三个框架&#xff0c;四项注意”。 一、一字真言 各位看官&#xff0c;学好C语言&#xff0c;其实只需一个字&#xff0c;那就是“编”。 &#xff08;一&#xff09;编。 学习C语言&#x…

推荐给初学者:如何学好C语言?

点击上方“大鱼机器人”&#xff0c;选择“置顶/星标公众号” 福利干货&#xff0c;第一时间送达&#xff01; 学习C语言不是一朝一夕的事情&#xff0c;但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C语言是本文的主题。请注意&#xff0c;即使是“最小的代价”…

如何学好C语言?

目录 零基础学习C语言该怎么入门&#xff1f;第一步 视频课程第二步 阅读配套教材第三步 完成配套练习习题第四步 如果题目不会做怎么办&#xff1f;第五步 如果参考答案看不懂怎么办&#xff1f;第六步 熟练使用C语言第七步 全面理解C语言第八步 精通C语言第九步 C语言实战 零…

新手如何学好C语言?

作为一名资深码农&#xff0c;在软件行业也拼搏了十多年&#xff0c;这里跟想学习C语言的萌新童鞋分享下我的个人学习心得&#xff01;&#xff01;&#xff01; 在大学时代&#xff0c;我们大二才开始学习C语言&#xff08;起步有点晚啊&#xff09;&#xff0c;第一次看到那…

完全卸载nginx的详细步骤

一个执着于技术的公众号 前言 在开局配置Nginx时有可能会配置错误&#xff0c;报各种错误代码。看不懂或者懒得去看这个报错时&#xff0c;其实最简单的方式是卸载并重装咯。今天就带大家一起学习下&#xff0c;如何彻底卸载nginx程序。 卸载nginx程序的详细步骤 1、停止Nginx软…

Linux中完全卸载nginx及安装的详细步骤

前言 在开局配置Nginx时有可能会配置错误&#xff0c;报各种错误代码。看不懂或者懒得去看这个报错时&#xff0c;其实最简单的方式是卸载并重装咯。今天就带大家一起学习下&#xff0c;如何彻底卸载nginx程序。 一、卸载NGINX 卸载nginx程序的详细步骤 1、停止Nginx软件 …

Linux 下卸载nginx的操作步骤(亲测有效)

亲测有效&#xff0c;傻瓜式步骤&#xff0c;按着步骤来你也可以成功卸载nginx!!! 1.执行命令&#xff0c;看nginx是否在运行 ps -ef|grep nginx 上图可看出nginx在运行状态&#xff0c;接下来 2.到nginx的安装目录下 cd /tmp/upload/software/nginx 3.输入停止…

Centos7安装、卸载nginx及配置,配置成系统服务(一步到位)

目录 前言 一、下载安装解压 1.进入临时文件夹里&#xff08;随便一个都行&#xff09; 2.下载并安装nginx压缩包 3.解压该压缩包 4.创建目标文件夹 5.&#xff08;默认会安装在/usr/local/nginx&#xff09;这里通过configure命令指定安装目录 6.编译安装 7.最后生成的…

CentOS7卸载Nginx、最后有命令总结

第一步、查看Nginx的进程 命令 &#xff1a;ps aux | grep nginx 下图表示Nginx启动 下图表示Nginx没有启动 第二步、如果Nginx没有启动就可以跳过这个步骤了&#xff1b;如果是启动状态的话用下面命令进行停止&#xff1b; 先通过可命令1找到对应目录在执行命令2 命令1&#x…

安装、卸载nginx(基于Centos7)

一、卸载&#xff1a; 1、检查任务进程&#xff1a; ps -ef|grep nginx &#xff08;有活动进程&#xff0c;kill 掉 &#xff09; kill -9 进程ID2、查看nginx相关文件 find / -name nginx 3、文件删除 4、检查依赖 yum remove nginx 二、安装&#xff1a; 1…

Windows下cmd卸载nginx服务

文章目录 一、Windows卸载nginx服务1.以管理员身份运行CMD2.进入到安装的nginx目录下3.卸载nginx服务 一、Windows卸载nginx服务 1.以管理员身份运行CMD 2.进入到安装的nginx目录下 3.卸载nginx服务 命令&#xff1a;nginx-service.exe uninstall #nginx服务卸载后再次执…

linux 下卸载nginx的操作步骤

linux 下卸载nginx的操作步骤 1.执行命令&#xff0c;看nginx是否在运行 ps -ef|grep nginx 2.如上图&#xff0c;发现nginx是在运行状态&#xff0c;所以停止nginx服务 注意&#xff0c;要进入到nginx的目录&#xff0c;执行命令 ./nginx -s stop 3.删除nginx相关内容 首先…

nginx配置详解,完全卸载nginx, nginx https配置

nginx 配置文件详解 文章目录 nginx 配置文件详解Ubuntu nginx 目录结构nginx 配置文件结构默认nginx.conf( (1.18.0版本)location详解&#xff0c;proxy_pass详解https配置&#xff0c;https转发http配置负载均衡配置 完全卸载nginx Ubuntu nginx 目录结构 默认的目录结构 旧…