🌟接下来就让小奔来带着大家简单的了解一下C语言,不过看起来挺多的,哈哈哈,写了大概八十个小时吧,不过小奔是在20几天前才开始学的哦,这里只是简单带着大家对C语言有一个轮廓的认识,小奔会持续更新的
入门第一个语言——C语言
目录
🎩0. 看前须知
🌟对于我们这些才步入编程界的小生来说,有一个方向尤为重要,但是无论选择哪个方向,有一门计算机语言是我们都要去学习的,这门计算机语言就是C语言
🌟为什么说C语言是我们都要学习的呢?
🌟我问过鹏哥,如果你想入手编程的话,而且也是一门比较经典的语言,以这门语言作为编程入门的语言是比较合适的
🌟C语言在编程领域的用途的话,一个C++开发工程师他必然要懂C语言对吧,因为C语言和C++本质上是不分家的,在学完C之后,再延伸往后学习C++,这个时候就可以做C++开发工程师对吧,如果你学了C之后,要走Linux方向,那这个时候呢可以做Linux C的一个开发,甚至可以做底层的驱动开发,都是没有任何问题的,或者做一些嵌入式开发,驱动开发,包括系统开发都是需要C ,Linux这一套的
🌟接下来,学完C语言之后,对于其他编程语言的学习也更加容易一些,因为C语言简单对吧,容易上手,而且它是一门偏底层的计算机语言,它让你更加了解内存底层的一些原理之类的,学完之后,你再学习其他计算机语言都会变得非常容易,得心应手
💗1. 学C语言前期的准备
💗1.1 建议
1.喜欢分享
要习惯去分享,可以向我一样写博客,就是要去把自己的观点分享出来,不能闭门造车,善于分享的人对以后的工作有非常的优势。(找工作的时候,哎,把自己的博客链接一贴,面试官看了就能知道你是一个喜欢分享的人,会有很好的印象。)
2.要去实践,去刷题
学习编程必须去实践,去刷题,我推荐一些网站,可能还有不知道的其他很不错的刷题网站,我了解后会补充在这里。
链接:
牛客网
3.建立一个自己的仓库
学编程要建立一个自己的仓库,我听过程序猿敲过的代码,它能运行就行,你稍微一改,可能就改了一个数,就运行不了,但是你可能就会忘记改的哪里,或者电脑死机,你写的代码就在里面,取不出来,这时候如果有一个仓库储存着这些代码,需要的时候重新把这个代码从仓库里拿出来,就不会怕上面这种情况。
我使用的是gitee,这个跟博客有一个相同的作用,就是面试的好工具,大公司都喜欢这个,里面还有一个贡献度,
你每上传一次代码,上面都会有记录,你这天上传的次数越多,绿点就会越深,而且也可以点击这个绿点来查看这一天所上传的代码,在面试的时候非常有帮助。所需要的软件都存在百度网盘的,就在最下面链接中。
💗1.2 安装相关的软件
1.如何安装编译器呢?
快看鹏哥的视频
(吹爆他,太强了)
2.如何使用
gitee
呢?
还是看鹏哥的视频
(鹏哥是真的强)
🎻2. 什么是C语言
c语言是一门计算机语言(比如c++/java/python…),常用于底层开发,跟人类交流的语言类似,它是人与计算机交流的语言。
计算机语言的发展:低级–>高级
发展到C语言时,已经是高级语言了
语言形式 例:
二进制的指令 1001010
汇编语言 ADD
C语言的国际标准:ANSI C(常用的是C89,C90还包括C99,C11…)
编译C语言的编译器主要有
MSVC
(作者目前使用),GCC,Clang,WIN-TC,Turbo C等
C/C++是编译型的语言,要把源代码(
test.c
), 编译为程序(test.exe
), 需要4个过程(下面四个过程)
初步了解编译器运行过程:
我们都知道计算机使用的是
二进制
语言,我们生活在十进制的世界,
二进制就例如10010101
,逢二进一;
八进制就例如157643235
,逢八进一;
十进制就例如95124921
,逢十进一;
十六进制就例如A5B46
,逢十六进一。(A指10,B指11,依次类推)
二进制 八进制 十进制 十六进制
1 1 1 1
10 2 2 2
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1101 15 15 E
1110 16 16 10
1011001011 1313 715 2CB
那么计算机为什么要使用
二进制
语言而不去使用八进制
,十进制
,甚至十六进制
的语言呢,这是物理方面的原因,只有二进制
比较好实现,
灯亮则是1
灯灭则是0
从物理方面好实现,其他的进制都不太好实现,这里就先简单了解一下
📓3. 第一个c语言程序
我们在敲出第一个C语言程序前先思考一下,为什么要写代码?
当然是为了解决生活中的问题(比如购物、点餐、看电影等)
📓1.打开VS
跳转到目录末尾
📓2.创建新建项目
跳转到目录末尾
📓3.选择空项目
跳转到目录末尾
📓4.输入项目名称并创建
跳转到目录末尾
我这里推荐把项目名称改为当天的日期,存放在一个统一的位置,方便自己查找,也方便自己把代码上传仓库
📓5.创建源文件
跳转到目录末尾
在解决方案资源管理器那里的源文件右击,就可以弹出来那些选项(如果一不小心把解决方案资源管理器关了,不要关掉整个软件,你可以点最上面的视图,再点击解决方案资源管理器就可以了)
注意:记得把名称的后缀.cpp
改为.c
C的语法和C++的语法是有所差别的
.cpp后缀 编译器会按照C++的语法来编译代码
.c后缀 编译器会按照C的语法来编译代码
我们目前使用的是C语言,在后面的C++学习篇中再来使用
.cpp
后缀
📓6.写代码
跳转到目录末尾
//
这个是写注释的,即把这一横行的代码无效化
vs2019环境如何运行代码:
运行按键ctrl+f5
或fn+ctrl+f5
#include<stdio.h>
//c语言代码中一定要有main函数
//也就是主函数
//printf是一个库函数,是专门用于打印数据的
//标准的main(主)函数写法
int main()
{
printf("Hello world!");
return 0;
}
//古老的写法-不推荐
//void main()
//{
//
//}
运行的结果:
打印了一个
Hello world!
📓解释:
跳转到目录末尾
1.
#include<stdio.h>
是在程序编译之前要处理的内容,称为编译预处理命令(还记得上一个博客里面编译器运行的四个过程吗,第一个过程就是预处理)
std—指标准(standard)
i—指输入(input)
o—指输出(output)
2.
int main() { return 0; }
是C语言main函数(也叫主函数)的一种声明方式(我目前写的简单的代码都要套用这个模板,还不清楚的看之后发的博客所示代码就能明白),这里的int
是数据类型(下一个博客会讲)里面的整型(比如6,48,99
等的整数),int
对应后面的是return 0
;
return 0
即返回值为0
,因为int
是整型,所以要求返回值也符合int
,这个0
也可以是其他数,但我们俗称规定的就是0
,就不要搞特殊写4
,5
什么其他的数字了。
3.
printf(" ");
库函数,专门用来打印数据的,c语言提供这个库函数,是不是你的?当然不是,它是别人给你的,所以你要用的时候需要打个招呼,这个头文件#include<stdio.h>
就是用来打招呼的,说我要用这个printf
这个库函数
🔭4.数据类型
之前说过写代码是为了解决生活中的问题,比如购物。
假设我们要买一本书,它的价格是
10.5
,是个小数,也可以是一个整数10
,它的书名是钢铁是怎样炼成的,是一组字符串,就像svli@gikvw
这些,里面每个称为字符。
我们要去用c语言来去存储这些信息呢,在c语言里面为了能够描述这些类型。
就把小数抽象出来一个数据类型,叫浮点型
把整数抽象出来一个数据类型,叫整型(就是上面的
int
)
把字符抽象出来一个数据类型,就叫字符
10.5 - 小数 - 浮点型
10 - 整数 - 整型
A - 字符 - 字符
那么c语言里面抽象出来哪些数据类型呢?
char //字符数据类型
short //短整型
int //整型
long //长整型
long long //更长的整型
float //单精度浮点数
double //双精度浮点数
//浮点型 10.5
//整型 10
//字符 A
看了上面的数据类型,很容易看出来下面的关系:
为什么叫浮点数?
就像66.6
和6.66*10
,小数点是可以浮动的,所以叫浮点数
那么,为什么会有上面这么多的类型呢?我们就需要先回答一下下面这个问题:
每一种类型的大小是多少?
我们等一下用代码问一下他们各自的大小
先了解一下新的东西
#include<stdio.h>
int main()
{
printf("%d\n",100)//
return 0;}
这个
%d
指的是打印(输出)的格式,即整型,后面的100
是返回值,即打印的是100
,\n
的意思就像enter
,空行的意思,如图:
运行结果:
100
现在来解释一下\n的作用,这里用两组代码来对比一下:
第一组
#include<stdio.h>
int main()
{
printf("%d\n",100)//
printf("%d\n",100)
printf("%d\n",100)
return 0;}
运行的结果:
100
100
100
第二组
#include<stdio.h>
int main()
{
printf("%d",100)//
printf("%d",100)
printf("%d",100)
return 0;}
运行的结果:
100100100
可以看出,\n的作用就是空一行,就是平时enter的作用
接下来就是
#include<stdio.h>
int main()
{
printf("%d ", sizeof(char));
printf("%d ", sizeof(short));
printf("%d ", sizeof(int));
printf("%d ", sizeof(long));
printf("%d ", sizeof(long long));
printf("%d ", sizeof(float));
printf("%d ", sizeof(double));
return 0;
}
运行结果:
1 2 4 4 8 4 8
(那么这些数字的含义是什么?它们又是怎么来看出所占内存的大小呢?我们等一会儿就来解释。)
这里的sizeof()
的作用就是返回数据类型中的char
在内存中所占的大小,通俗点就是用它来告诉你char
这个数据类型占多少内存
不过这里用%d
不太合适,在一些的编译器里面会报警告,我们用%zu
最合适,sizeof
的返回值要用%zu
来打印。
int main()
{
printf("%zu\n", sizeof(char));
printf("%zu\n", sizeof(short));
printf("%zu\n", sizeof(int));
printf("%zu\n", sizeof(long));
printf("%zu\n", sizeof(long long));
printf("%zu\n", sizeof(float));
printf("%zu\n", sizeof(double));
return 0;
}
结果跟上面那个图是一样的,运行结果是:
1
2
4
4
8
4
8
(我里面加了\n
,所以是一排一排的)
接着我们来讲上面那些数字的含义,
你只看到了它们这些数字,但没有单位,其实它们都是有单位的