核心:为什么要学习——解决问题
1.C语言是什么
C语言是一门服务于人与计算机之间交流的计算机语言,类似的计算机语言有:Java,Go,Python...
程序员通过计算机语言写的程序,对计算机下达指令,解决我们的问题。
2.C语言的可执行文件
C语言是一门编译型的计算机语言,它的源代码都只是文本文件,我们人看得懂文本,可机器看不懂啊,机器只能看得懂二进制文件,这意味着我们需要通过一定的手段将文本文件转化为可执行程序。
而这个过程分为两步,我们叫做编译与链接。在编译中使用的工具叫编辑器,在链接中使用的工具叫链接器。
(1)编译:编译器将每个文本文件单独生成相应的目标文件。(.obj作为目标文件后缀)
(2)链接:链接器将所有目标文件统一生成可执行程序。(.exe就是可执行程序文件的后缀)
最终我们得到的这个可执行程序文件是二进制的,这样,我们就可以让机器成功读取我们的命令,执行工作了。
3.编程工具
常有道:“工欲善其事,必先利其器”,上文提到的编译器和链接器,就是在诸多编程工具之中的两种。常见的C语言编译器还有:微软给出的msvc,苹果的clang....
但是哈,这边有个编译器,那边又有个链接器,我写个程序就已经很痛苦了,写完还要去挑选用什么,一步一步地把我的文本转化成对应文件,最头痛的是有时这些工具还不一定兼容,到时候竹篮打水一场空,又得重头再来。
所以呢,为了解决这些杂七杂八的事情,我们的主角——集成开发环境(IDE)就应运而生,它里面把所有你要用到的工具都装在一起,管你什么编译器,链接器,调试器.....No problem! 我这里面什么都有,妈妈再也不用担心我去浪费时间选工具了!
值得一提的是,这其中:有微软给的VS,苹果的clang,devc++....题主使用的呢,就是VS2022。
4.VS2022使用原因
我为什么要使用VS2022呢?————鹏哥讲的。
好吧,答案当然不能如此肤浅,之所以用VS,原因就在于:
1.社区版免费,开玩笑,免费啊兄弟。
2.企业要用,“HR您看,我已经有打工人的自觉了”。
3.默认中文,起码不用操心语言。
4.一键安装即可食用,不用再对环境动手动脚。
缺点:占用空间多(只要您不是C盘战神,孩子是一定能打赢复活赛的!)
5.C语言中基础概念介绍
写程序前:
项目(工程):与平日使用的意思相同。我们VS中编程写代码就要在项目中写,里面能包含很多文件。
头文件: .h 为后缀。
源文件: .c 为后缀。
写程序中:
main函数(主函数):所有程序的唯一入口,程序执行最开始的地方。一个项目中有且只有一个主函数!!!
例:梦开始的程序
#include <stdio.h>
int main()
{
printf("我爱中国");
return 0;
}
在这个程序中,int 表示结尾要返回一个整型类型的值(我们暂且理解为整数类型),与最后一行的 return 0 相呼应;
printf 正如字面意思,就是用来打印出我们输入的 “我爱中国” 。只要把想输入的字,放在 " " (英文双引号)之中就可以了。
写程序中的易错点:
1. 一定要用英文输入法来打程序!!(虽然有的东西中文也可以打,但是你也不想那么麻烦对吧,为了避免报错,用英文打)
2. main 不要敲成 mian;
3. int main 之后的小括号不要漏(小括号中没有内容,此处单指一般写法)!
4. 中间每一句代码敲完,一定要打英语分号结尾!!
库函数与关键字
从水下第一个生命的萌芽开始....到石器时代的巨型野兽.....您已经历许多...
咳咳,C语言最初开发只是为了一个叫UNIX的系统用的,写的特别简单,后面谁知道,这个语言竟然火了,用的人越来越多,但是随之而来,人们使用的需求也越来越广,原先使用的语言已经无法满足这些需求了,每个程序员就要从底层开始编写逻辑,(相当于数学做题,你每次要先用公理把诸多性质先证一遍,真的很爽)。
为了避免这个麻烦,C语言的开发商就规定了一组函数,把它们交给不同的编译器厂商自己去编,这些函数形成了函数库,这里面的函数就叫库函数(有点绕),但是,编译器厂商会夹带私货(额外拓展函数),有的库函数可能在其他编译器不提供。库函数要想使用,要在使用之前包含头文件(.h),格式就是:#include < .h> 。
既然库函数是外来的,关键字就是原本的了。
关键字就是C语言保留名字的符号,也叫保留字。祖宗之法不可变,所以在自己创建标识符的时候,名字是不能与关键字重复的!当然,都是祖宗之法了,自己当然也是不能创建关键字滴。(ps:无论是库函数还是关键字,都可以自己去查)
字符与ASCII编码
字符,我的理解就是占一个输出格的东西(平常的如一个数字,字母,标点;有些是不可见的,如空格),由于计算机储存数据依靠的是数字,还是二进制;因此我们就需要去用二进制数字指定对应的字符。
但话又说回来,要对应一堆字符,就先要定个标准。如果你这边搞个标准,他那边又有一套标准,全世界混一起不乱套了吗?所以美国国家标准学会就使用ASCII当作标准,C语言就依照这个标准。
ASCII码就像字典,要用就查,不过一些特殊的值还是可以记忆方便敲出来:
大写字母A~Z : 65——90;
小写字母a~z : 97——122;(每个小写字母与大写字母相差32)
数字0~9:48——57;
前32个数字是不可打印的:0——31
字符串:在 " " (英文双引号)中的内容,字符串的末尾会隐藏 \0 。
转义字符:以 \ (斜杠)为开头的字符,如 \0 (当然,不是 \ 后加任何东西都是转义字符,但转义字符前面是加 \ 的)
例: \n 换行;
\a 警报;
\123 八进制数字;
\x12 十六进制数字;
注: 想打印标点符号时,如在 两个双引号 中间打印 双引号———— " " "——此时就可以使用 \" 来防止报错,因为双引号只会识别最近的双引号。
语句:就是写程序过程中,表达一个步骤的句子,如: printf(" ") ;这就是一条语句
在此不对语句的内容做过多阐述,因为比起记这种东西,你会用所学知识打出代码解决问题就可以了,不必打完代码说“这是xx语句”
注释:解释代码什么意思,在注释中的内容不会被当作代码读取。
第一种表示方法: /* */ 以 /* 开头,*/ 结尾
注:这种注释方法可以 注释一段的内容,但是不能嵌套;也就是说,/* 遇到第一个*/ 就会把这两个中间的内容当作注释。
实例:
int main()
{
/*我家大门常打开
/*北京欢迎你
有梦想谁都了不起*/
在黄土地刷新成绩*/
return 0;
}
在这一段中,“在黄土地刷新成绩”就不会被注释掉,因为第一个 /* 已经遇到了第一个 */。
第二种表示方法: // 在需要被注释内容前加上 // 即可
int main()
{
迎接另一个晨曦,带来全新空气;
岁月难忘青春笑容 //茶香飘满情谊
我家大门常打开,开怀拥抱等你
return 0;
}
在这里, // 只注释掉了 它后面处于同一行的“茶香飘满情谊”,其他地方不动。
(这是第一讲的内容复习,有些地方自己改动了,因为占位符等内容可以后面再讲,这里提冗余了。)