博客之路,从此开始
一:写在前面
1.我为什么要写博客?
首先,我认为写博客是一种对自己学习状况的总结,这与自己做笔记不同,发博客出来会有其他人看到,这是一种无形的监督,督促你去学习。其次,我学习C语言已经有一段时间了,在这段时间里,我从不同的人的博客中收获了许多,觉得自己学有所得之后,或者解决了一个难题以后,也应当把方法分享出来,帮助其他人。最后,写博客被他人看到之后或许会有人留下评论,无论是褒奖还是批评,都能对我的学习起到作用。
2.本篇博客写了些什么?
本来我打算第一篇博客仅列出我的自我介绍,编程目标等,但又觉得这样太过空洞,于是打算从头开始,梳理我C语言的学习过程,也能给刚开始学习C语言的伙伴们一个参考。这一篇会讲述如何利用VS创建第一个项目,以及输出Hello world有关代码的浅析。
3.自我介绍
我现在就读于上海的某一所本科大学,目前大一,专业是材料学,起初我对编程其实并没有多少了解,对自己的专业也并未有很大的不满,但自从我学习了C语言之后,这个想法就改变了,我发现自己对编程尤为的喜爱,开始对自己的专业感到不满,现在短期的目标是转专业去到计算机科学与技术。
4.编程的目标
据我的老师所说,编程有三种境界:
- 看代码是代码
- 看代码是内存
- 看代码还是代码
我的目标就是达到第三种境界
5.我打算如何学习编程
- 每天做至少一道编程题
- 每天看至少半小时有关编程的视频或书
- 每周至少写一篇博客记录自己的学习情况
6.我打算在编程上花费的时间
每天根据课程的数量时间在1h到3h波动,周末每天至少3小时。
7.我最想进入的一家IT公司
目前我对各个公司还不太了解,并未有特别想进入的公司,后续有了我可能会再发一篇博客谈一谈。
二:初识C语言
1.编译器的选取与安装
我目前使用的编译器是VS2019,是我的老师推荐我使用的,支持中文,界面看起来也很舒适,小白使用没有什么问题。
安装地址:链接
进入后下载社区版即可,具体的安装过程可以看有关的博客,这里不再赘述。
2.C语言项目的创建
1.打开电脑上的Visual Studio, 点击创建新项目
2.选择C++栏下的第一个空项目,然后下一步。
3.之后有两个一般来说要修改的地方,一个是项目名称,二是文件存放的位置
4.第一个项目名称可以写成Hello World,位置可以选你想存储的地方,我本身是放在E盘,之后点击创建
5.一般会自动弹出解决方案管理器,若是没有,可以在视图的第一栏中找到
6.点到源文件一栏,右击鼠标,添加-新建项
7.选择第一个C++文件,名称默认为源.cpp,我们需要修改它
8.名字可以起你想起的任何一个名字,但是后缀从.cpp一定要改成.c,否则编译器会把你的代码当做c++进行编译,改成.c后才是对应C语言。
9.恭喜你完成了第一个C语言项目的创建
3.输出Hello World!几行代码的意思
相信很多人的第一次学习C语言写的第一个代码就是输出Hello World!
#includeint main(){printf("Hello World!");return 0;}
讲上述代码输入,再按下调试或者快捷键ctrl+F5,你就能看到一个框框弹出来,上面写着Hello World!了
我第一次成功时,内心也是激动的,但是我却有很多疑惑,为什么这样就能输出Hello World呢?
上面这四行又有什么作用呢?
- 我们先看看第三个位置,这一行或许比较容易去理解,如字面意思就是打印Hello World,但为什么输入printf后加上Hello world就能输出呢?
- 这就要回到第一行有个好像看不懂的东西#include,这一行的作用是引用头文件,就是把别人已经写好的东西拿到这里来使用,头文件的名字是stdio.h,这个头文件里面包含了许多常用的库函数,几乎每一个程序都需要引用这个头文件,如果你不引用这个头文件直接使用printf,编译器将会报错
- 我们可以看到错误列表里的显示,prinf未定义,这就是未引用头文件造成的
- 到现在你应该对头文件有了个大概的认识,我们继续看看prinf
- 可以看到printf后面跟了(),()里面再有个"",再里面才是Hello World,一定要这么写么?是的
- printf()本身是一个函数,后面的括号是必不可少的,我们以后看到一堆东西加(),几乎都是一个函数。就跟数学中的f(x)差不多。我们要做的就是往括号里面传参数,就是填x的值
- 由于Hello World不是我们定义的变量(变量后续会讲),所以我们用引号引起来表面它是个字符串
- 最后的分号;很重要,是一条语句结束的表示,可以理解为我们写作文时的句号,没有这个;,编译器仍然会报错。
- 可以看到错误提示,告诉我们缺少;,以后编写代码的时候千万不能忘记写;
- 看到这里,相信你对prinf为什么能输出Hello World也大致明白了,具体prinf的使用这里就不细讲了
- 我们回去看看引用头文件的下面一行,就是第二行,这个int main()是什么意思呢?
- 我们先抛开前面的int不谈,先来看看main(),前面说过一堆东西加个()是什么?函数
- 我们称main()为我们的主函数,有一个主字,想必你应该知道它很重要了
- 任何一个C语言程序一定要有且只有一个主函数,它是我们程序的接口
- 我们的代码从哪里开始执行,就是由主函数决定的,你可以试试将prinf("Hello World")放在主函数之外,编译器会告诉你错误
- 可以看到,不论是主函数之前还是之外,编译器都会报错,我是不是还没说主函数从哪开始到哪结束,我决定你已经猜到了,对就是在两个{}之间,不仅是主函数,其它函数也是如此,我把它称为函数的作用域。
- 既然说有且只有一个main()函数,那我写俩会发生什么呢?---编译器报错
- 最后只剩下我们的return 0了,return意思是返回,那么返回什么呢?我们后面写了个0,意思就是返回了一个0,你或许想问,为什么一定得是0,返回1可以吗?返回110可以吗?
- 语法上是支持的,但是不推荐,因为规定是写0,几乎所有的程序员都这么写,如果你不想当个例外,建议你也写成 return 0
- 它具体的作用除了返回一个值,还有一个作用就是结束当前的函数
- 可以看到,在return 0之后,我们想让计算机打印Hello!,但是这个语句并未被执行。
- 现在每一行都讲完了,我们捡起来我们之前忽略的int,它其实是C语言里面众多数据类型的一种
- 常见的数据类型还有
- 为什么要有这么多的类型呢?答案是为了创建和存储不同类型的变量
- 比如int,short,long,long用于存储整数,char用于存储一个字符,float,double用于存储小数(浮点数)
- 这里我们就创建了a变量存储了一个字符'w',b变量存储一个整数10,c变量存储一个小数3.1
- 既然整数用int,小数用float就行了,为什么还要有short,double呢?答案是它们能存储数据的大小不同
- 这里sizeof是一个操作符,作用是算出一个变量或类型能存储的字节数(Byte),至于sizeof后面不是跟了个()吗?怎么不是函数?之后再说。
- 一个字节,就是1Byte=8bit, bit指的是比特,或许后面的关系你更熟悉
- 1kb=1024b,1gb=1024kb,这里的b是指的Byte(字节),不是bit(比特),或许你对1bit有多大还是不太了解,这里举个例子吧
- 比如说10,它在计算机里面怎么存储呢?10换成二进制是1010,1010就占了4个比特位,也就是4bit,
- 而一个整型也就是int的大小为4字节(Byte),就是32bit,它能存储的最大数字就是2^32 -1
- 前面printf我们在引号里写了个%d,这又是什么意思呢?这代表输出一个整数,具体后面再说
- 而紧接着的/n作用是换行,就是回车。
- 这里我们可以在看看return 0,这个0就是一个整型,是不是和main()前面的int对应上了呢,至于为什么main()前面要加int,这也是规定。
四:总结
通过上面的学习,你应该学会了如何用VS创建一个项目,并且会输出Hello World,并且知道了那几行代码的意思,了解头文件,主函数,数据类型,return 0的作用,函数的作用域。希望对初学C语言的你有所帮助。