新手如何学好C语言?
作为一名资深码农,在软件行业也拼搏了十多年,这里跟想学习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
新手如何学好C语言?相关推荐
- 怎样学好C语言,一个成功人士的心得!
今天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了全部的数字化信息,不论是一段程序,一封email,一部电影都是用一连串的 ...
- 如何学好C语言,一个成功人士的心得!
来源URL:http://blog.csdn.net/yxnk/article/details/5976699/ 今天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克 ...
- 大学期间,为啥我能学好C语言?只因我做到了这五点!
学习C语言已经有一段时间了,对C也算得上半个入门者,期间也写过一些自娱自乐的代码.其实个人认为无论学习什么语言,最重要的是掌握习编程思想,然而C语言一种学习编程思想的基础语言.所以,C语言的重要性不言 ...
- 零基础如何学好C语言?
经常有人会这样问"我没有一点基础,该如何入门C语言,该如何学好C语言 ?"看到很多初学者摸不到门路,我在这里制定了相应的学习计划,对于零基础新手一定会有很大的帮助. 很多新手认为学 ...
- 哔哩大学计算机学院:如何学好C语言
目录 前言 一.工欲善其事必先利其器 二.怎么学好C语言 1.学习语法 2.必须画图理解,内存布局 3.调试,调试,再调试 总结 前言 想自学C语言自学看视频学不会,方法没掌握对?网上资料很多该怎么选 ...
- 新手如何学好C++?
最近,很多学员都给我发邮件问我应该如何学习C++,如何学好C++? 那么作为一个从C语言小白摸爬滚打.入坑无数到成长为如今的高级C++游戏开发工程师.高级C++服务端工程师.项目经理.技术总监.我想跟 ...
- 讲谈初学者如何学好C语言(一)
前言 关于这个C语言系列,我将讲谈初学者最关心的一系列问题. 对象:C语言零基础:有经验但是不够熟练的同学.(只要你有一颗热爱学习的心,这个系列一定能收获到你意想不到的知识) 大家主要关心问题如下: ...
- 作为一个编程新手如何学好Java编程?
作为一个编程新手如何学好Java编程? 对于一个热衷于Java技术的程序员, 作为一个Java编程新手,掌握好下面的几个要点可以让你在众多Java开发人员中脱颖而出. 1.选择很重要 作为一个初学者, ...
- 语言都是相通的,学好一门语言,再学第二门语言就很简单,记录一下我复习c语言的过程。...
语言都是相通的,学好一门语言,再学第二门语言就很简单,记录一下我复习c语言的过程. 为了将本人的python培训提高一个层次,本人最近买了很多算法的书. 这个书上的代码基本都是c语言实现的,c语言很久 ...
最新文章
- python 定义空集合 和定义空字典的
- 计算几何题中的英语生词
- C语言字符5,c语言总览5:字符输入和输出
- 全球四大互联网公司最大的敌人是谁
- matlab 通信工程,MATLAB 通信工程仿真
- cocos2dx-lua 骨骼动画spine使用心得(cocos2dx版本 3.17 spine版本3.6.53)
- eps提取高程点在哪里_Eps总结(3)——Eps使用点云生成等高线及高程点
- python数据拟合方法_Python-最小二乘法曲线拟合
- CocosCreator之粒子动画入门:飞机尾焰
- 声音莫名从扬声器切换到听筒_扬声器听筒的切换
- 巴斯大学计算机世界专业排名,巴斯大学有哪些专业_专业排名(上交世界排名)...
- 三维实景地图,从航测到建模,再到可视化平台
- 对代码签名另一种认识(下)
- NGINX配置ftp目录
- 统计学习方法 第二章 感知机
- C++解决《无重复字符的最长子串》问题(滑动窗口(unordered_set),string)
- 全面掌握前端框架Vue.js
- LeNet实现手写数字识别
- 亚马逊商品图片使用技巧和规范你都了解吗?
- imregionalmin