作为一名资深码农,在软件行业也拼搏了十多年,这里跟想学习C语言的萌新童鞋分享下我的个人学习心得!!!
在大学时代,我们大二才开始学习C语言(起步有点晚啊),第一次看到那本黄黄的谭浩强老师的《c语言教程》,哈哈哈,就是这本了,满满的回忆啊!

开学拿到这本书后,心情很激动,因为以前总是羡慕那种黑客,好像很牛的样子, 抱着好奇的心理随便翻开了几页看了看,全程一脸懵逼, 因为以前从来没有接触过编程,所以犹如读天书。没事,才接触肯定是这样的,没关系,看不懂咱们来硬看!!!
我学习中记忆很深刻的是才开始看数据类型,什么整数,字符类型,浮点数,在这段知识点还勉强可以看懂,只是各种数据类型的范围还弄不明白,因为是数字范围,比如无符号整数,浮点数这种
| 0 ~ 2^32-1(4 294 967 295) |
| -2^31(-2 147 483 648) ~ 2^31-1(2 147 483 647) |
这种, 搞不清楚!!! 所以就跳过了,然后看到变量赋值这个知识点,我也是混淆了好久,一直搞不明白 为什么
| a=100; |
不是比较,可能是以前数学思维, = 就是相等的意思。现在才明白,这个是赋值,把值塞到变量a中。。。
总之,我还是萌新的时候,经历了和大家一样的心路历程,现在看来,这些知识点太简单了!后面我就反复抱着书本啃,一点一点的理解,最终70%还是能看懂了,所以在这里,首先告诉大家,编程的这些语法,概念看不懂,千万不要害怕, 一回生二回熟,多啃几遍,逐渐你会发现你渐渐能看懂了,而不是看一遍之后,觉得看不懂,就不在看了,这样你就会越来越迷糊!!!就这样课前做好预习,上课听老师认真讲解,我的c语言学的非常顺利,比其他同学学的都比较快,但是我们班普遍反馈c语言特别难!后面由于突出的表现,被我们的C语言老师(但是是计算机学院副院长)看中,帮老师代课,哈哈哈!!!
前面说了这么多,就是想告诉大家,我在学校学C语言的时候,也是萌新小白一个,并没有很高的起点,连我竟然都能学好,你也一定可以学好,那么下面我来跟大家重点说下,学习C语言中应该侧重的知识点,C语言的知识点,其实并不是很多。
先说基础的语法,那么数据类型你肯定得记住啊,相当编程界的1+1=2 ,这些太简单了
| 数据类型 | 描述 | 大小 | 范围 |
| char | 字符 | 1字节 | -128 ~ 127 |
| short | 短整型 | 2字节 | -32768 ~ -32767 |
| int | 整型 | 4字节 | -2 147 483 648 ~ 2 147 483 647 |
| long | 长整型 | 4字节 | -2 147 483 648 ~ 2 147 483 647 |
| float | 单精度浮点型 | 4字节 | -/+3.4e38(精确到6位小数) |
| double | 双精度浮点型 | 8字节 | -/+1.7e308(精确到15位小数) |
然后变量的赋值,这个必须理解啊:
| 写法 | 含义 |
| a = 2 | 把2这个值塞到a中,让a里面的值变成 2 |
| a==2 | 这个才是数学中的比较 两个是否相等 |
| 2 = a | 错误写法, 2 是常量,没法往里面塞,只能往变量里面塞 |
| a = b | 可以往变量里面塞 |
在这两者的基础上,你需要理解一些流程,也就是我们写代码的基本结构
| 结构 | 代码 | 说明 |
| 循环 | for while do-while | 三种循环 |
| 判断 | if else | 条件判断 |
| 选择 | switch case | 选择分支 |
| 跳出语句 | continue break | 用于上面三种结构 |
还有一个重要的概念,函数
| 函数类型 | |
| int main(int argc ,char **agv) | 主函数,程序的入口 |
| int fun(int a, int b ) | 有参数,有返回值的普通函数 |
基本上,上面都属于比较简单的概念,好,下面难度升级的知识点来了!!!
数组,c语言中的第一个难点
| 数组 | 举例 | 难度 |
| 一维数组 | int a[5]={1,2,3,4,5} | 简单 |
| 二维数组 | int a[2][3]={ {1,2,3},{4,5,6} } | 复杂 |
| 字符数组 | char a[3]={ 'a', 'b', 'c' } | 简单 |
| 字符串产生的 一个字符数组 | char a[]="abc"; | 很难理解区别啊 |
自定义类型,c语言第二个难点
| 自定义类型 | 举例 | 难度 |
| struct | struct Stu { int age; char name[10]; } | 中等 |
| union | union Addr { int age; char name[10]; } | 复杂,与结构体的区别 |
指针,C语言的终极难点,大家的噩梦来了,但是这个就是C的精华,掌握这个,才能说你真正的会c语言了
| 类型 | 举例 | 难度 |
| 指针概念 | 就是一个变量而已, 存放了一个地址值
int *a = 0xfffe1824; char *b = &c | 复杂 |
| 数组指针 | int a[3 int *p= a;
int b[3][4] int (*p)[4] = b;
int *c[3] int **p=c; | 超复杂 |
| 函数指针 | int fun(int a,int b) { }
int (*p)(int ,int ); p = fun; | 超复杂 |
链表:把上面指针与结构体学透了,就开始挑战链表吧
| 链表类型 | 举例 | 难度 |
| 单向链表 单项循环链表 | struct Node { int data; Node * next; } | 中的 |
| 双向链表 双向循环链表 | struct Node { int data; Node * prev; Node * next; } | 复杂 |
| 链表操作 | 头插,尾插, 删除,反向,修改 | 复杂 |
文件收尾,结束你的C语言阶段!!!
| 文件操作 | 举例 | 难度 |
| 文本文件 | FILE * fp= fopen("1.txt","r") | 中等 |
| 二进制文件 | FILE * fp= fopen("1.txt","rb") | 中等 |
| 文件指针的移动 | fseek | 复杂 |
其实,个人认为,大学里面C语言的知识点真心不多,大家只要掌握我上面列出的知识点,其实就差不多了,核心的我已经用红色背景标注了,掌握这几门核心,其实你的c语言应该很不错了,如果你有不同意见,评论区告诉我!!!
当然我也把这些知识点整理为了一个课程学习包《一站式C语言全套开发》,大家有兴趣可以去看看
https://edu.csdn.net/combo/detail/1024


















