C语言从零开始(一)

写在前面

毫无疑问,大部分资深程序员的编程生涯都是从C语言开始的。依稀还记得大一时候自学C语言时的情景,当时刚上大一,博主为了追求心仪的妹子就在完全不懂得C语言是什么的情况下报名参加下学期的计算机二级(C语言)考试。这一行为果断引来了女神关注,效果颇佳。然而在仔细了解了C语言之后,才发现比想象中的困难了一些。再加上大二的学长们各种渲染C语言有多难学,于是心中开始打鼓。

大一的寒假,我从图书馆借来了三本C语言入门的书,开始自学。其中自然有大名鼎鼎的谭浩强老人家的书。记得当时安装Turb C就花了好几天的时间,几近崩溃边缘。后来终于用一个寒假的时间把基础知识都学会了,又做了几套计算机二级的卷子,连蒙带猜的通过了第二学期的考试。从此就算是和编程结了缘。

当年的妹子如今已经杳无音信,而C语言的代码我一写就写了十年。

这十年里,IDE从最简单的Turb C到VC 6.0再到VS2005、2008、2010、2013...开发方向从嵌入式到Windows开发再到Linux服务器开发,当年学习C语言那份热情依然还在。后来又在公司担任了新员工试用期项目培训的工作,每年都要把变量的指针和指针变量这样的东西反复讲。看着他们一个个独立完成了自己的试用期项目,博主成就感爆棚。

最近几年,一直坚持利用业余时间帮助网友解决C语言学习过程中的各种疑难问题。每天至少花费2小时时间回复邮件。随着来信越来越多,越发感到力不从心。况且大部分朋友的问题都是类似的,重复回答实在无趣,希望更多的朋友与我交流。

下面进入正题

1. 教材选择

不想给大家一长串书名,那样也许就直接抹杀了你学习C语言的兴趣,这里重点推荐三本。

《C程序设计》谭浩强

C程序设计

很多大牛都不推荐谭浩强的《C语言程序设计》,但我不这么认为。这本书虽然讲的不那么到位但作为初学者从它入门还是挺合适的。最重要的是,网上大部分初级网友都是以它为基础进行交流的,有了它更容易融进各种论坛的讨论。

《C程序设计语言》 Brian W.Kernighan | Dennis M.Ritchie

C程序设计语言

这本书是C语言之父Dennis参与编写的,虽然不厚,但有些思想讲得比较到位。建议初学者学习。

如果你想学习C/C++可以来这个群,首先是三三零,中间是八五九,最后是七六六,里面有大量的学习资料可以下载。

《C Primer Plus》

C Primer Plus

这本书是非常经典的教材,每个知识点都介绍的非常到位。可以说这是入门级的选手的终结教材。如果想学好C语言并在后面有更大的发展,这本书必须要看。它能帮你打下坚固的程序设计基础。

学习好这本书之后,学校里的各种考试和小竞赛就不在话下了。接下来,你该开始自己的进阶之路了。

2. IDE选择

如今,Turb C肯定是已经永远地退出历史舞台了,但初学者还是要选择一款合适的IDE才能方便的上手。

GCC + vim

很多学校的实验室都用的Linux系统,建议大家从vim开始编写最初的代码。

编写好后执行下面代码:

$ gcc -c main.c
$ gcc -o main main.o
$ ./main

Code::Blocks

这是一个轻量级的IDE,对于初学者而言,这是不二选择。

Code::Blocks

可以从这里下载你需要的版本

VS 2013

无疑这是C语言开发最牛X的工具,然而这里不建议初学者使用。由于Microsoft自己制定了很多自己关于开发的规则,初学者会发现课本上的代码原封不动的敲在上面却报出莫名其妙的错误。

VS2013

不过,当你拥有一定C语言基础的时候,VS的学习一定是必不可少的。

3. 实践

编程是一门非常注重实践的学科,如果你不去亲自敲代码的话,那你永远也学不会。而博主也更愿意在邮件中针对具体的编程问题和大家讨论。

这里推荐两个适合初学者编程练习的在线系统。

北京大学 POJ | 杭州电子科技大学 ACM

已经入门的朋友可以前去练习,有什么问题我们一起讨论。

4. C语言知识结构

C语言知识结构

时间: 2024-10-28 19:59:14

C语言从零开始(一)的相关文章

庆中秋:用Windows XP桌面图标玩贪吃蛇(原理)

到处都有好玩的玩意儿 计算机的世界里离散的:内存从 0 -> 2n 编号:整个屏幕的画面也是由许多颗像素点组成--如果你不介意的话,把脸尽量地贴近显示器(或者电视屏幕),你会看到整个屏幕是由一颗颗显示不同颜色的小颗粒拼成的.如果这样感受还不深,那你还记得小时候玩过的最初型掌上游戏机吗?如下图: 其中经典的飞机.坦克.俄罗斯方块等都是由一个个正方形的黑色方块拼成的. 放眼周边的世界,到处都有这样规则排列的.方方正正的"游戏元素":摩天大楼的窗户.大教堂的座位.从楼上往下看的人群.E

《从零开始学Swift》学习笔记(Day 69)——Swift与Objective-C混合编程之语言

原创文章,欢迎转载.转载请注明:关东升的博客   在Swift语言出现之前,开发iOS或OS X应用主要使用Objective-C语言,此外还可以使用C和C++语言,但是UI部分只能使用Objective-C语言.   选择语言 Swift语言出现后,苹果公司给程序员提供了更多的选择,让这两种语言并存.既然是并存,我们就有4种方式可以选择: 采用纯Swift的改革派方式: 采用纯Objective-C的保守派方式: 采用Swift调用Objective-C的左倾改良派方式: 采用Objectiv

一步一步教你从零开始写C语言链表--->构建一个链表

为什么要学习链表? 链表主要有以下几大特性: 1.解决数组无法存储多种数据类型的问题. 2.解决数组中,元素个数无法改变的限制(C99的变长数组,C++也有变长数组可以实现). 3.数组移动元素的过程中,要对元素进行大范围的移动,很耗时间,效率也不高. 先来感性的认识一下链表,我们先来认识下简单的链表: 从这幅图我们得出以下信息: 这个简单链表的构成: 头指针(Header),若干个节点(节点包括了数据域和指针域),最后一个节点要指向空. 实现原理:头指针指向链表的第一个节点,然后第一个节点中的

Java有哪些常用语?Java常用语言汇总

  Java有哪些常用语?不介绍Java 常用语,对Java 的总体介绍就是不完整的.尽管促使Java 诞生的源动力是可移植性和安全性,但在Java 语言最终成型的过程中,其他一些因素也起了重要的作用.接下来,绿茶小编就一一来介绍一下. · 简单(Simple) · 安全(Secure) · 可移植(Portable) · 面向对象(Object-oriented) · 健壮(Robust) · 多线程(Multithreaded) · 体系结构中立(Architecture-neutral)

《Groovy语言规范》-语法

原文链接  译者:王山山 语法 本章节涵盖了Groovy编程语言的语法.Groovy语言的语法源自Java语法,为Groovy增强了特定构造,允许一定程度上的简化语法. 1.注释 1.1.单行注释 单行注释以//开始,在一行中任何位置都可以被发现.//后面的字符,直到一行的末尾都是注释的一部分. // a standalone single line comment println "hello" // a comment till the end of the line 1.2.多行

Java语言常用语一览

  不介绍Java 常用语,对Java 的总体介绍就是不完整的.尽管促使Java 诞生的源动力是可移植性和安全性,但在Java 语言最终成型的过程中,其他一些因素也起了重要的作用.Java 设计开发小组的成员总结了这些关键因素,称其为Java 的专门用语,包括下面几个: · 简单(Simple) · 安全(Secure) · 可移植(Portable) · 面向对象(Object-oriented) · 健壮(Robust) · 多线程(Multithreaded) · 体系结构中立(Archi

JSTL 入门:表达式语言

js JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断.数据管理格式化.XML 操作以及数据库访问.在 developerWorks 上其新系列的第一篇文章中,软件工程师 Mark Kolb 向您展示了如何使用 JSTL 标记来避免在 JSP 页面中使用脚本编制元素.您还将了解如何通过从表示层删除源代码来简化软件维护.最后,您将了解 JSTL 经过简化的表达式语言,它允许在不必使

JSTL 入门: 表达式语言

js JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断.数据管理格式化.XML 操作以及数据库访问.在 developerWorks 上其新系列的第一篇文章中,软件工程师 Mark Kolb 向您展示了如何使用 JSTL 标记来避免在 JSP 页面中使用脚本编制元素.您还将了解如何通过从表示层删除源代码来简化软件维护.最后,您将了解 JSTL 经过简化的表达式语言,它允许在不必使

从零开始学 Java (一) Hello World 左光 2005.4

从零开始学 Java  (一) Hello World     左光 2005.4 从昨天开始学习 Java,把自己在学习中遇到的一些问题和体会发出来,供大家借鉴. 要想编写一个 Java 版的 Hello World  程序并运行需要完成下面两步: 1.下载并安装JDK5.0 或者 JDK1.4.2 .不要对版本号产生什么疑问,据我的理解,JDK5.0 也就是JDK1.5 ,是 JDK1.4.2 的重要升级,里面加了许多新的语言特性,为什么叫 5.0 而不叫1.5 ,我想可能是出于商业上的考虑