如何学习C语言?很容易,C语言从入门到入土,从长发飘飘到秃顶
在未来计算机专业讲又要迎来一批新生小鲜肉!C语言入门到入土,从长发飘飘到秃顶的老铁也越来越多,其中,想自学成才的也占了不少数;想笨鸟先飞的也占有不少数。
传说中的C语言就是那么刺激和高挑战
没有基础的人也可以直接学习,速度会慢一点
C语言上手可能不是很容易,首先你的花费一周时间掌握最基本的内容。(PS:没有基础的人也可以直接学习,速度会慢一点)
- 常用的基本数据类型(int,float,double,char)的使用,必然包含常用的输入和输出函数。
- 程序的三大结构学习:顺序结构,选择结构,循环结构。
- 模块化程序设计的函数了解下
你再花2周学习些:
- 指针
- 结构体
- 文件
此时,有些人就在简历中得意的自称\”会\”C语言了。
但是学到如此程度,在实际编程中会经常遇到挫折,主要源自理解不够深入,仅仅体验了一下C语言语法而已。
随意列举一些新手普遍存在的问题:
- 不了解C语言模块化设计,变量名, 指针概念含混。
- 更换编译器,程序出现怪异的结果。
- 怎样定义和声明C语言全局变量和函数最好?
- 在C语言中,一个结构不能包含指向自己的指针吗?
- 什么是C语言最好的代码布局风格?
- 为什么不能向接受const char **的函数传入char **?
- 用缩写“if(p)”检查空指针是否可靠?
- char *指针指向一些int变量,如何跳过?
- 怎样建立和理解非常复杂的声明?
师傅给我剃个光头
拥有某项技能的程序员的价值,可以用学习技能所需的成本来衡量。你用2周学习达到的这种程度,对于企业就是没有价值的,因为老板可以让一个公司里任意其他语言的程序员经过2-3周的学习就能达到你现在的程度。
C语言的 简洁紧凑、灵活方便。快速开发对项目有价值,但这不是你的价值,是C语言的价值。所以提高自身价值,也就是不让别人轻易追上你。以极低的成本替代你。
你只能快跑,进一步学习,C语言语言层面还需要学习下面一些内容:
- 1.C语言运行机制,编译过程。
- 2.C语言模块化思想。
- 3.深入理解C语言面向过程的设计思路。
- 4.C语言编程思维。
- 5.C语言文件同步操作
上述都是语言层面的,属于内功。实战中当然也需要一些更为具体的外功,训练外功可以从熟悉C语言标准库开始,这些模块能进入标准库说明他们足够好并且在实际项目中足够常用,列举一些极为常用的:
- 1.正则表达式
- 2.Socket网络编程
- 3.读取PE文件操作
- 4.进程内存查询与修改
- 5.常用的数据结构与算法
老板我要换种洗发水
无论练习内功或外功,结合实战都是最好的训练方式和检验手段,可以根据个人情况以及喜好选择,如:
- 网络编程借用第三方网站为跳板做实时信息查询.(例如身份证查询)
- 使用第三方库开发小游戏案列,例如推箱子,扫雷,连连看,消消乐
- 编写小应用,个人词典啊
- 使用C语言做算法题,ACM,还有各种地方的什么杯(飞机杯,罩杯)
- 使用C语言做数学建模或者数学计算
- 使用第三方库做终端模式的播放器
- OpenGL做图形处理
个人建议选择小项目进行实训,有些新手上来就想定一个大目标,做的时候很挫折,往往半途而废。把小东西先实现,然后优化。接下来添加新功能,慢慢迭代把小东西做大。这样在做的时候,每实现一个小功能你都会有成就感,激励继续前进。
可能经过比较漫长的一段时间,你成为了一个熟练的C语言小瘪三,还有些高级话题可以继续学习:
- windows编程
- Linux编程
- Qt框架编程
这些高级话题在开发中经常使用, 它们可以帮你更便利实现功能。
通常自称一个月光速学了会C语言的人基本都不是天才,只是浮躁,目标定的比较低而已,认知局限而已。不要太过急功近利,慢慢玩,精进。
当然啦,自学C语言想拔高精进大多都是困难的
- 没有良师讲解,有些知识点和技术没法消化
- 自身理解力不够,稍微高深一些的就看不懂了
- 还有的……
- 时间不够,自制力也不够
如果你基础比较差,不妨关注视频教程专栏教程《C语言51课视频教程合集片》:
通俗易懂,深入浅出,文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。
图文并茂,通俗易懂《C语言项目视频集锦》
世上唯一不能复制的是时间,唯一不能重演的是人生。该怎么走,过什么样的生活,全凭自己的选择和努力。
经验分享丨零基础第一次接触C语言,应该怎么上手?
工欲善其事,必先利其器。相信我,选择VS不会错(推荐版本2013~2019)。
①为什么不选VC6.0?这个编译器是98年的软件,老旧且兼容性差。
②为什么不选Devc++?这个软件十多年前就停止更新了,敲出的代码不美观,不利于好的代码风格的形成
③为什么不选CodeBlock?不是主流,需要配置,不适合初学者
④为什么不选VSCode?需要配置环境,不适合初学者
VS提供的错误检查和格式缩进对新手很友好
视频肯定比博文讲得清楚,实践性也更强
VS2019安装教程VS2013安装教程
作者当然没有资格对这一问题下定断言,只是提供作者这两个月以来的学习经验,帮助新手少走弯路
上课篇:如果是选择视频学习的,不要死揪着不懂的地方,要跟上老师的上课思路。刚开始学肯定都会有很多疑问,但之后肯定都会讲到。所以上课要先试着接受老师所讲的知识
笔记篇:如果说老师讲的知识都在课件上或书本上的话,上课不要急于记笔记,而是在草稿本上记下上课的思路。如果能照着上课思路写成博文那说明掌握的很好,所以也可以说把CSDN当成笔记本来用 。同时推荐一些做笔记的软件:有道云笔记Xmind印象笔记
实战篇:1.代码一定要敲(敲重点啦),体验自己成功写出代码的快乐。2.看待代码有三个层次——看代码是代码(小白),看代码是内存(高手),看代码是代码(大佬)。所以在学习时要主动加深对内存的理解。3.遇到问题要学会调试(之后会专门提到)——程序员的必修课。
至此文件已经创建好了。
(解决方案资源管理器在这里)
[相信你对上面提到的细节有些疑惑,但还是那句话,先接受现有的知识,其他的以后都会懂 ]
按下ctrl+fn+f5(或者Ctrl+f5)可以在屏幕上打印hello world。现在我们从三个方面解释这段代码:
特点:main函数为函数入口,有且 只有一个 ,即在一个工程下即使有多个文件也只可以有一个main函数,试想一个文件如果有多个入口那到底从哪里进去呢?
规范性:
1.这里int不写虽然系统默认返回类型为int,但是作为优秀的程序员们,我们要力求规范
2.return不写虽然也不会报错,但还是上面提到的规范规范问题
是什么:库函数是 C语言提供的,使用的时候只需要引用即可。引用的方式是#include< xx.h >这里的printf所对应的库函数位于stdio头文件下,引用这个头文件就可以使用printf函数了
接下来我们认识一下学习到的第二个函数printf
printf函数功能是是将特定格式的数据输出到屏幕上,没有加格式就原封不动地打印
我们实践一下加深理解:具体结果请大家实践操作
这个int是什么东西,有什么用呢?
:first_quarter_moon_with_face:是什么:int表示是一种数据类型
前面说过main是一个函数,函数前面加类型表示这个函数的返回值(函数的知识之后会讲)
这里重点讲一下数据类型
【short=short int long =long int (在这里int被省略了没写而已)】
①为什么有这类型
试想一下我们描述超市里的一件商品,总得有名字吧,也总得有编号吧,价格肯定也不能少吧,所以我们怎么可能用一种类型就描绘出所有的内容呢。不同类型代表不同的含义,他们向内存申请的空间可是不同的,这很好理解。现在我们分析一下不同类型的大小。
②类型的大小
我们首先介绍一个关键字sizeof(他也是一个运算符。敲重点!!!sizeof不是函数,也不能认为关键字和运算符一样),他的作用是返回某个类型的大小。
认识了sizeof之后我们用他来求各个类型的大小(单为字节B)
<关于long的大小等于int的理解>C标准只规定了long的大小>=int即可,具体的大小由编译器决定。
:rainbow:之前提到,不同的类型决定了向计算机申请的内存大小,那内存的单位是怎么理解的?
一个b可以看成是一个小格子,一个B则是八个小格子组成。计算机中采用二进制存储,也就是说一个格子可以表达两种信息(0 或者 1,很好理解,计算机是由很多“开关”组成的,开关要么开要么关,于是就有了0 1),那么一个B可以表示的信息则有2^8种。
③类型的意义
根据前面提到的我们可以算出1个int大小可以表达的信息有2^32(看成是有序的),而一个short表示的信息有2^16,差别还是很大的。假设我们要存储一个人的年龄,总不会超过四位数吧,用int表示的话岂不是大材小用。虽然short也大很多,但浪费的内存更少。所以从中我们可以看出类型的意义在于合理的向内存分配空间。
希望对大家有帮助!
为了帮助大家,轻松,高效学习C语言/C++,给大家分享我收集的资源,从最零基础开始的,帮助大家在学习C语言的道路上披荆斩棘!
编程学习书籍分享:
编程学习视频分享:
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!大家也要把握住大学的时光,抓住成长的每一次机会哦~
对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。