新手如何学好C语言?

作为一名资深码农,在软件行业也拼搏了十多年,这里跟想学习C语言的萌新童鞋分享下我的个人学习心得!!!

在大学时代,我们大二才开始学习C语言(起步有点晚啊),第一次看到那本黄黄的谭浩强老师的《c语言教程》,哈哈哈,就是这本了,满满的回忆啊!

新手如何学好C语言?_第1张图片

开学拿到这本书后,心情很激动,因为以前总是羡慕那种黑客,好像很牛的样子, 抱着好奇的心理随便翻开了几页看了看,全程一脸懵逼, 因为以前从来没有接触过编程,所以犹如读天书。没事,才接触肯定是这样的,没关系,看不懂咱们来硬看!!!

       我学习中记忆很深刻的是才开始看数据类型,什么整数,字符类型,浮点数,在这段知识点还勉强可以看懂,只是各种数据类型的范围还弄不明白,因为是数字范围,比如无符号整数,浮点数这种

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语言?_第2张图片

你可能感兴趣的:(新手指引)