不如开始学C语言(第一天) 适合小白和大学生
不如开始学C语言(第一天) 适合小白和大学生
为什么要学C语言
对于大学生来说当然是为了不挂科,毕竟计科专业的第一学期就可能要学C语言了.对于小白来说可能你是业务需要,也有可能是兴趣爱好或者其他吧
C的起源和发展
想要了解C不如先了解它的起源和历史
第一代语言
机器语言一款只有0/1代码的语言,有了它,再也不用担心你的代码不够多,不够长,分分钟让惊艳同学或朋友. 机器语言让你的"hello world"也能用掉一堆纸.
第二代语言
汇编语言,早期的封装,将常见的机器语言进行封装,汇编语言就直接将常见且固定的0/1整合起来,例如做加法,我就做加法的机器语言封装成一个单词add,只要我们使用add这个关键字,底层将自动解析成对应的机器语言.
第三代语言
汇编语言之后又出现了第三代语言。第三代语言又叫"高级语言"。
高级语言的发展分为两个阶段,以1980年为分界线,前一阶段属于结构化语言或者称为面向过程的语言,后一阶段属于面向对象的语言。
什么叫面向过程,什么叫面向对象?这是很难解释的一个问题,所以这个问题大家现在先不要考虑。等到将来你们学完C语言、C++、Java或者C#之后才有可能理解。因为这个需要比较。总之,面向过程语言中最经典、最重要的就是C语言。Fortran、Basic和Pascal语言基本上已经很少有人使用了。但是C语言一直在用,因为C语言是计算机领域最重要的一门语言。但是C语言也有缺陷,它的缺陷只有在学完面向对象语言之后才能体会到。所以从20世纪80年代开始又产生了另外一种“以面向对象”为思想的语言,其中最重要、最复杂的就是C++。C++从易用性和安全性两个方面对C语言进行了升级。C++是一种较复杂、难学的语言,但是一旦学会了则非常有用。
因为C++太复杂,所以后来就对C++进行了改装,产生了两种语言,一个是Java,另一个是C#。Java语言是现在最流行的语言之一。C#则是微软公司看Java很流行而写的一个与Java语法相似的语言.
速度
这个确实很好去判断,机器必然是最快,汇编第二,毕竟汇编的底层要解析成机器语言,多了一步必然慢一点,同理,java底层要解析成c++在转汇编在转机器.所以c和c++必然比java,c#,go都要快
c的演变
这个我就不多说了,网上肯定都有,不过还是有一个挺意外的东西就是,linux是用c语言写出来的
应用场景
系统软件开发
1)操作系统:UNIX、Windows、Linux。
2)驱动程序:比如主板驱动、显卡驱动、摄像头驱动。驱动一般是用C语言和汇编语言写的,C++在这方面稍弱。
3)数据库:SQL Server、Oracle、MySQL、DB2。
应用软件开发
1)办公软件:WPS。
2)图形图像多媒体:Photoshop、Mediaplayer。
3)嵌入式软件开发:嵌入式软件开发说得简单点就是芯片编程,比如我们以后学习在单片机和ARM上进行的开发都属于嵌入式软件开发。
4)游戏开发:2D、3D游戏。CS整个游戏的引擎全部是用纯C写的。
编写你的第一个hello world
安装devcpp
为什么要用devcpp,主要是因为vs的话对于小白来说文件比较大而且比较麻烦,devcpp相对轻量级,适合于小白开发,在后期在使用vs更好 DevC++官方下载 下载完后一直点击下一步即可
第一个程序
随便在一个目录下创建hello.c文件
#include<stdio.h>
int main(){
printf("hello world\n");
return 0;
}
点击如下,查看编译是否通过
我们可以看到没有任何问题,直接按住F10运行程序
这样一个简单的hello wolrd就实现了
代码解析
# include <stdio.h>
在C语言中,凡是以"#" 开头的都叫预处理指令。所谓“预”即“提前、先”的意思。所以“预处理”就是“提前处理”或者“先处理”的意思。如果你想运行某些程序则必须要操作系统下达命令,那么操作系统是怎么下命令的呢?首先要看VC++将这些功能藏哪了。对于后面写的大多数程序需要的功能,VC++都将它们藏在了stdio.h这个文件中。.h是这个文件的后缀名。那么怎么命令VC++将这个文件给“交”出来呢?就是通过include命令。这是一个英文单词,是“包含”的意思,大家应该都认识。在include后面加上stdio.h这个文件,就表示将这个文件包含进来。为了将include和stdio.h区分开,它们之间必须要加空格,并且用“<>”将stdio.h括起来。
int main()
我们先来看main。main是这个函数的名字,这个名字是固定的,不可以改成其他名字。main也是一个英文单词,意思是主要的,所以这个函数又叫主函数。
任何一个程序中都有且只有一个主函数main。所有程序在执行时都开始于主函数main,也都结束于主函数main。主函数main执行完后要返回一个值。int就是返回的这个值的类型。它是英文单词integer的缩写,integer是"整数"的意思,所以int就表示整型。main后面有一个括号,这个括号中放的是要传给主函数main的参数。而我们一般都不会给main函数传参数,所以里面就写"void"。
这两个大括号是一对,漏掉一个都不行。所以在编程的时候,无论是输入小括号"()",还是输入大括号"{}",都要成对地输入,然后再在它们中间写代码,这样就不会漏掉了。main下面的两个大括号括起来的部分叫"函数体",表示其间代码都属于main。
printf("hello world")
这个就是c语言专用的打印,也就是将hello world 打印到控制台中
return 0;
我们前面说主函数main有一个返回值,这个返回值的类型为int型。那么这个返回值到底是什么呢?就是这个0。return也是一个英文单词,是"返回"的意思。return 0; 即表示将0返回给主函数main。 那么这句到底有什么用处呢?为什么要将0返回给main呢?这是为了告诉main程序执行完了。main函数收到一个“0”之后就知道程序结束了,不用再往下执行了。
那么大家观察一下这一句同前面两句有什么不一样呢?最后多了一个分号。分号是C语言中非常重要的一个标记。分号有什么作用呢?在C语言中,加了分号的才是一条语句,语句是以分号结尾的。但是在C语言中并不只是语句,比如前面两句就不是语句,所以它们后面就没有分号。这一点一定要注意。
转载自:https://juejin.cn/post/7178337152407699514