C语言入门教程,C语言学习教程(非常详细)
C语言是一门面向过程的编译型语言,它的运行速度极快,仅次于汇编语言。C语言是计算机产业的核心语言,操作系统、硬件驱动、关键组件、数据库等都离不开C语言;不学习C语言,就不能了解计算机底层。
这套「C语言入门教程」由站长亲自执笔,将多年的编程经验灌输其中,典型的实践派。这部教程已经发布了 5 年,经历了 5 次大改版,既适合初学者入门(学习语法),也适合程序员进阶(学习底层)。
学习C语言,除了要学习语法,还要学习内存、字符编码、调试技巧以及编程思维,这些知识点本教程都做了详细讲解。
- 第1章 编程基础
- 1.通俗地理解什么是编程语言
- 2.C语言究竟是一门怎样的语言?
- 3.C语言是菜鸟和大神的分水岭
- 4.学编程难吗?多久能入门?
- 5.英语和数学不好,能学编程吗?
- 6.初中毕业能学会编程吗?
- 7.C语言和C++到底有什么关系?
- 8.学了C语言到底能做什么,能从事什么工作?
- 9.二进制、八进制和十六进制
- 10.不同进制之间的转换
- 11.数据在内存中的存储
- 12.载入内存,让程序运行起来
- 13.ASCII编码,将英文存储到计算机
- 14.GB2312编码和GBK编码,将中文存储到计算机
- 15.Unicode字符集,将全世界的文字存储到计算机
- 16.程序员的薪水和发展方向大全
- 17.不要这样学习C语言,这是一个坑!
- 18.明白了这点才能学好编程,否则参加什么培训班都没用
- 第2章 C语言初探
- 1.第一个C语言程序
- 2.选择正确的输入法,严格区分中英文
- 3.什么是源文件?
- 4.什么是编译和链接?
- 5.主流C语言编译器有哪些?
- 6.什么是IDE(集成开发环境)?
- 7.什么是工程/项目?
- 8.哪款C语言编译器(IDE)适合初学者?
- 9.如何在手机上编写C语言代码?
- 10.C语言的三套标准:C89、C99和C11
- 11.C语言为什么有那么多编译器?
- 12.程序安装是怎么回事?
- 13.制作安装包,让用户安装程序
- 14.C语言程序的错误和警告
- 15.分析第一个C语言程序
- 16.C语言代码中的空白符
- 17.彩色版的C语言,让文字更漂亮
- 18.一个真正带界面的C语言程序
- 第3章 变量和数据类型
- 1.大话C语言变量和数据类型
- 2.在屏幕上输出各种类型的数据
- 3.C语言中的整数(short,int,long)
- 4.二进制数、八进制数和十六进制数
- 5.C语言中的正负数及其输出
- 6.整数在内存中是如何存储的,为什么它堪称天才般的设计
- 7.整数的取值范围以及数值溢出
- 8.C语言中的小数(float,double)
- 9.小数在内存中是如何存储的,揭秘诺贝尔奖级别的设计(长篇神文)
- 10.在C语言中使用英文字符
- 11.在C语言中使用中文字符
- 12.C语言到底使用什么编码?谁说C语言使用ASCII码,真是荒谬!
- 13.C语言转义字符
- 14.C语言中的几个重要概念
- 15.C语言加减乘除运算
- 16.C语言自增(++)和自减(--)
- 17.变量的定义位置以及初始值
- 18.运算符的优先级和结合性
- 19.C语言数据类型转换
- 第4章 C语言输入输出
- 1.数据输出大汇总以及轻量进阶
- 2.在屏幕的任意位置输出字符,开发小游戏的第一步
- 3.使用scanf读取从键盘输入的数据
- 4.从键盘输入字符和字符串
- 5.进入缓冲区(缓存)的世界,破解一切与输入输出有关的疑难杂症
- 6.结合缓冲区谈scanf函数,那些奇怪的行为其实都有章可循
- 7.清空(刷新)缓冲区,从根本上消除那些奇怪的行为
- 8.scanf的高级用法,原来scanf还有这么多新技能
- 9.C语言模拟密码输入(显示星号)
- 10.非阻塞式键盘监听,用户不输入数据程序也能继续执行
- 第5章 循环结构和选择结构
- 1.C语言if else语句
- 2.C语言关系运算符
- 3.C语言逻辑运算符
- 4.C语言switch case语句
- 5.C语言条件运算符
- 6.C语言while循环
- 7.C语言for循环
- 8.C语言跳出循环
- 9.C语言循环嵌套
- 10.对选择结构和循环结构的总结
- 11.谈编程思维的培养,初学者如何实现自我突破(非常重要)
- 12.写一个内存泄露的例子,让计算机内存爆满
- 第6章 C语言数组
- 1.什么是数组
- 2.C语言二维数组
- 3.判断数组中是否包含某个元素
- 4.C语言字符数组和字符串
- 5.字符串的输入和输出
- 6.C语言字符串处理函数
- 7.C语言数组是静态的,不能插入或删除元素
- 8.C语言数组的越界和溢出
- 9.C语言变长数组:使用变量指明数组的长度
- 10.对数组元素进行排序
- 11.对C语言数组的总结
- 第7章 C语言函数
- 1.什么是函数?
- 2.C语言函数定义
- 3.C语言函数的形参和实参
- 4.C语言函数的返回值
- 5.C语言函数的调用(从中发现程序运行的秘密)
- 6.函数声明以及函数原型
- 7.全局变量和局部变量
- 8.C语言变量的作用域
- 9.C语言块级变量
- 10.C语言递归函数(带实例演示)
- 11.中间递归函数(比较复杂的一种递归)
- 12.多层递归函数(最烧脑的一种递归)
- 13.递归函数的致命缺陷:巨大的时间开销和内存开销(附带优化方案)
- 14.忽略语法细节,从整体上理解函数
- 第8章 预处理命令
- 1.什么是预处理命令?
- 2.#include的用法
- 3.C语言宏定义
- 4.C语言带参数的宏定义
- 5.带参宏定义和函数的区别
- 6.宏参数的字符串化和宏参数的连接
- 7.C语言中几个预定义宏
- 8.C语言条件编译
- 9.#error命令,阻止程序编译
- 10.C语言预处理命令总结
- 第9章 指针
- 1.1分钟彻底理解指针的概念
- 2.指针变量的定义和使用
- 3.C语言指针变量的运算
- 4.数组指针(指向数组的指针)
- 5.字符串指针(指向字符串的指针)
- 6.C语言数组灵活多变的访问形式
- 7.指针变量作为函数参数
- 8.C语言指针作为函数返回值
- 9.二级指针(指向指针的指针)
- 10.空指针NULL以及void指针
- 11.数组和指针绝不等价,数组是另外一种类型
- 12.数组到底在什么时候会转换为指针
- 13.指针数组(数组每个元素都是指针)
- 14.一道题目玩转指针数组和二级指针
- 15.二维数组指针(指向二维数组的指针)
- 16.函数指针(指向函数的指针)
- 17.只需一招,彻底攻克C语言指针,再复杂的指针都不怕
- 18.main()函数的高级用法:接收用户输入的数据
- 19.对C语言指针的总结
- 第10章 结构体
- 1.C语言结构体
- 2.C语言结构体数组
- 3.C语言结构体指针
- 4.C语言枚举类型
- 5.C语言共用体
- 6.大端小端以及判别方式
- 7.C语言位域
- 8.C语言位运算
- 9.使用位运算对数据或文件内容进行加密
- 第11章 重要知识点补充
- 1.typedef的用法
- 2.const的用法
- 3.C语言随机数
- 第12章 文件操作
- 1.C语言中的文件是什么?
- 2.C语言打开文件
- 3.文本文件和二进制文件到底有什么区别?
- 4.以字符形式读写文件
- 5.以字符串的形式读写文件
- 6.以数据块的形式读写文件
- 7.格式化读写文件
- 8.随机读写文件
- 9.C语言实现文件复制功能
- 10.FILE结构体以及缓冲区深入探讨
- 11.获取文件大小(长度)
- 12.插入、删除、更改文件内容
- 第13章 C语言调试
- 1.调试的概念以及调试器的选择
- 2.设置断点,开始调试
- 3.查看和修改变量的值
- 4.单步调试(逐语句调试和逐过程调试)
- 5.即时窗口的使用
- 6.查看、修改运行时的内存
- 7.有条件断点的设置
- 8.assert断言函数
- 9.调试信息的输出
- 10.VS调试的总结以及技巧
- 第14章 C语言内存精讲
- 1.一个程序在计算机中到底是如何运行的?
- 2.虚拟内存到底是什么?为什么我们在C语言中看到的地址是假的?
- 3.虚拟地址空间以及编译模式
- 4.C语言内存对齐,提高寻址效率
- 5.内存分页机制,完成虚拟地址的映射
- 6.分页机制究竟是如何实现的?
- 7.MMU部件以及对内存权限的控制
- 8.Linux下C语言程序的内存布局
- 9.Windows下C语言程序的内存布局
- 10.用户模式和内核模式
- 11.栈(Stack)是什么?栈溢出又是怎么回事?
- 12.一个函数在栈上到底是怎样的?
- 13.函数调用惯例(Calling Convention)
- 14.用一个实例来深入剖析函数进栈出栈的过程
- 15.栈溢出攻击的原理是什么?
- 16.C语言动态内存分配
- 17.malloc函数背后的实现原理——内存池
- 18.C语言野指针以及非法内存操作
- 19.C语言内存泄露(内存丢失)
- 20.C语言变量的存储类别和生存期