C语言常见概念

@TOC
一、C语言是什么人与人之间通过汉语,英语,德语相互交流,这些称为“自然语言”。人与计算机交流的语言则可称为“计算机语言”。
目前世界上已经有数千种计算机语言,而C语言则就是众多计算机语言中的一种,而且是较为基础的一种,而现在熟知的C++/Java/Python则是后续发展的计算机语言。
二、编译器的选择VS20222.1 编译与链接C语言是一门编译型计算机语言,C语言源代码都是文本文件,文本文件本身无法执行,必须通过编译器翻译和链接器的链接,生成二进制的可执行文件才能执行
C语言代码放在.c为后缀的文件中,要得到最终运行的可执行程序,中间要经过编译和链接2个过程
C语言是一门编译型计算机语言,需要依赖编译器将计算机语言转换成为能够执行的机器指令(计算机能够理解的其实是二进制信息),如下图流程:
C语言代码
代码语言:c代码运行次数:0运行复制int main()
{
..... -------------->编译+链接----------->可执行程序(被运行)
return 0; xxxx.exe
} 包含的都是二进制信息在这里插入图片描述注:
每个源文件.c单独经过编译器处理生成对应的目标文件(.obj为后缀的文件)多个目标文件和库文件经过链接器处理生成对应的可执行程序(.exe文件)这就是,在Windows电脑上C语言程序生成的exe可执行文件
在这里插入图片描述2.2 编译器的对比C语言是一门编译型的计算机语言,需要依赖编译器将计算机语言转换成机器能够执行的机器指令。
我们常见的C语言编译器有msvc(微软开发),clang(苹果开发),gcc,还有一些集成开发环境(一种软件应用程序,集成了文本编辑器、编译器、调试器和图形用户界面等多种工具,能帮助开发人员更高效地编写、测试、调试和管理代码,提高软件开发的效率和质量),如:VS2022、XCode、CodeBlocks、DevC++、Clion等。
VS2022 集成了MSVC(安装包大一些,安装简单,无需多余配置,使用起来很方便)XCode 集成了clang(苹果电脑上的开发工具)CodeBlocks 集成了gcc(小众,需要配置环境,不太推荐)DevC++ 集成了gcc(小巧,一些竞赛使用)Clion 是默认使用Make,编译器是可以配置的(工具收费,不太推荐)那么就此来看VS2022就全是优点没有缺点吗?当然不是,下面我们来分析一下VS2022的优缺点
2.2 VS022的优缺点
优点:
VS2022是一个主流的集成开发环境,企业中使用较为普通VS2022包含了:编辑器+编译器+调试器,功能强大直接安装即可使用,基本不用额外的配置环境,上手容易默认界面是中文的,初学者友好缺点:
安装包大,占空间多(10GB)特别注意,现在还有一款软件叫VScode,它既不是编译器,也不是集成开发环境!它其实是一个更加高端的编辑器,且支持丰富的插件,拥有丰富的插件,自己可以搭建一个C/C++的开发环境,但是不适合初学者(其更适合阅读代码,适合写脚本,适合写前端代码)
VS2022的安装教程
三、 VS项目,源文件和头文件的介绍下面我们来介绍一下怎么用VS2022写自己的第一个C语言代码
创建项目创建源文件:.c为后缀的文件写代码在这里插入图片描述在这里插入图片描述在这里插入图片描述注意项目名称这里,尽量不要使用中文和空格,后期的存储可能会出现问题,别问我为什么知道,建议初学便养成良好的习惯(使用字母加数字加下划线组合),小编我习惯使用test_04_18_01(意为四月18日第一个文件),文件位置也要管理好,如图我文件存储的文件有code(代码),顺便记单词了哈哈。(注:项目名称这里不用加.c后缀,这里是小编误加了(呜呜呜写完才发现)至于为什么没有改呢,因为小编懒(狗头护体))
到这里说明你的项目创建成功了,如果没有左边的解决方案资源管理器,可点击试图中的解决问题资源管理器即可调出
2.创建源文件
右击源文件--添加--新建项
在这里插入图片描述这里有可能出现两种视图,第一种紧凑视图
在这里插入图片描述若是紧凑试图,点击显示所有模板
在这里插入图片描述选择C++文件(.cpp),有些人就要问了,我们不是写C语言吗,为什么选择c++,其实C++是兼容C语言的,在VS上没有专门的C文件的选项
在这里插入图片描述但是!!我们必须在名称这里加一个.c后缀,因为系统默认的是c++的后缀
xxxx.cpp C++程序的源文件
xxxx.c C程序的源文件
在这里插入图片描述添加完成后,左边是项目的文件结构,右边一大片空白区域是代码的编辑区
四、第一个C语言程序3.终于终于终于到正式写代码的部分了(上面作者#define....后面那部分先不用看,看不懂也没关系,你没有暂时也没事,算了叫作者小编有点奇怪,我就不要脸一点自称”小帅“了)
写代码要注意的就是要按照语法的要求来写代码
按照你想要的效果来写代码
比如我们现在想打印一句”我是小帅",按照我下图写出这几行代码即可,然后按Ctrl+F5,如果在你的电脑上不行可以试试Fn+Ctrl+F5,也可以注(第一行真的不用写,而且除了中文部分,其余部分全用英文,无论符号)
在这里插入图片描述也可以这样启动运行
在这里插入图片描述如果有的人想要左边的行号,觉得该背景色,字体不好看,可以在CSDN自行查相关资料,小帅在这里不做过多解释。
下面我们来具体解释一下这串代码
五、main函数每个C语言程序不管有多少行代码,都是从main函数开始的,main函数是程序的入口,main前面的int表示mian函数执行结束的时候返回一个整型类型的值。所以在main函数的最后写return 0;正好前后呼应。
main函数是程序的入口main函数有且只有一个即使一个项目有多个.c文件,也只能有一个main函数(因为入口只能有一个,这里可以理解为高中物理所学的一个单向的半导体)第一次写代码,一些常见的错误总结(包括小帅犯过的哦)
main被写成了mianmain后边的()漏掉了代码中不能使用中文符号,比如括号和分号每一行代码写完后都写分号六、printf和库函数什么是库函数呢?
在计算机语言发展的过程中,为了不再重复实现常见的代码,提高程序员的开发效率,C语言标准规定了一组函数,这些函数再由不同的编译器厂商根据标准进行实现,这些函数组成了一个库函数,称为”标准库",这些函数也被称为库函数。在这个基础上一些编译器厂商而可能会额外扩展提供部分库函数(这些库函数在其他编译器上不一定支持)
一个系列的库函数一般会声明在同一个头文件里,所以库函数的使用,要包含对应的头文件。这里可以理解为,你要问你的邻居借一个东西,就必须先向他打个招呼,这里包含对应的头文件就是这个意思就如我上述代码,引用printf函数应用了#include
七、关键词的介绍C语言有一批保留的名字的符号,比如:int,if,return,这些符号被称为保留字或关键字
关键字独有特殊的意义,是保留给C语言使用的程序员自己在创建标识符的时候是不能和关键字重复的关键字也是不能自己创建的
在这里插入图片描述I编码在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语言中字符使用单引号括起来的,如:'a','b','@'。我们知道在计算机中所有的数据都是以二进制的形式存储的,那这些字符在内存中分别以什么样的二进制存储的呢?如果我们每个人自己给这些字符中的每个字符编一个二进制序列,这个叫做编码,为了方便大家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了一个标准ASCII编码,C语言中的字符就遵循了ASCII编码的方式。
在这里插入图片描述该表格是C/C++官网的表格,感兴趣的可以进入链接看看
表格网站
这里对表格里的数据进行了一些归纳总结:
字符A-Z的ASCII的码值从65-90字符a-z的ASCII码值从97-122对应的大小写字符(a和A)的ASCII码值的差值是32数字字符0-9的ASCII码值是48-57换行\n的ASCII值是:10在这些字符中ASCII码值从0-31这32个字符是不可打印字符,无法打印在屏幕上观察九、字符串和'/0'这里我们打开VS2022的监视窗格来解释一下,这里现解释一下怎么打开调试窗格,可以直接点击f10,就会进入调试模式,每点击一下f10,代码就会向下运行一下,或者点击调试窗格的逐过程
代码语言:c代码运行次数:0运行复制"abcdef";//字符串
{'a','b'};//字符
"";//空字符串对于字符串“abcdef”,我们实际上看到了6个字符:a,b,c,d,e,f,但实际上在末尾还隐藏一个\0的转义字符,\0是字符串的结束标志。所以我们在使用库函数printf()打印字符串或者strlen()计算字符串长度的时候,遇到\0的时候就自动停止了。
在这里插入图片描述这里的数组是储存一串数据的意思,向内存申请了一片空间,而我们图中是把数据放到了这空间里
你预想中的结果是不是都是abc呢,但是打印字符这里却出现了错误。其本质原因是字符串的末尾是隐藏了一个'\0'字符,'\0'是一个转义字符,作为字符串结束的标志存在的,打印的字符存放在内存中,程序运行起来是跑到'\0'就自动结束了,而打印字符因为没有'\0',程序就要跑完这片空间,而这片空间后面是什么内容程序不知道,就会出现错误,下面以这个图形象展示一下
在这里插入图片描述此时我们只要在打印字符的后面加一个'\0'就可以正常打印啦
在这里插入图片描述有的人就要问,你凭什么说他就隐藏有'\0'呢,有什么证据呢?
我们依旧打开调试功能,对arr1和arr2进行监视,下面附图监视在哪
在这里插入图片描述在这里插入图片描述在这里插入图片描述如图arr1显示的值有a b c \0,而arr2显示a b c。是不是就非常直观了呢
十、转义字符这里我只讲解几个我认为有点东西的转义字符
在这里插入图片描述C/C++官网的转义字符解释
在这里插入图片描述解释一下什么是三字母词,在一些早期的编译器上,想打印图中的一句话,后面的??)可能会打印出],为了防止出现这种情况,就有了\?这个转义字符。
下面就以图片的形式简单展示一下这些转义字符的作用
在这里插入图片描述在这里插入图片描述这里getchar是输入一个字符的意思,只要不输入就不会进入后续的程序,更直观的显示换行符的作用。
这里我们再细讲一个转义字符的作用\t
在这里插入图片描述这里的解释是什么意思呢,我的理解是它类似于一个空格,空格的大小是8个字符的大小(起码在VS里是这样的),如果前面有字符,它就会自动补充到8个字符的长度,如下图效果
在这里插入图片描述这里再解释一下VS里常出现的一个错误
在这里插入图片描述在这里插入图片描述我们扩展一下如何计算字符串的长度
在这里插入图片描述这里有人就要问了,不是之前说字符串后面有一个\0吗,加上之后字符串的长度不应该是7吗,我们这里看作strlen统计的是字符串中\0之前的字符个数
加一个练习,如下图,请问字符的长度
在这里插入图片描述正确答案是18,哟恩说这里\198不是八进制的转义字符吗,理论上是的。但是!注意看,八进制是0-7,这里出现了8和9,能是八进制的吗,所以这里只有\1是八进制转义。
我们再换一下,把\1换成\0,到\0直接停止计算
在这里插入图片描述十一、语句和语句分类C语言的代码是由一条一条的语句构成的,C语言中的语句可为以下五类:
空语句 //一个;就是一个语句,就是空语句表达式语句 //在表达式的后面加上;就是表达式语句函数调用语句 //printf("hehe");//调用了printf函数,就是函数调用语句复合语句 //就是代码块,成对括号里的代码就构成一个代码块,称为复合语句控制语句5.控制语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构)它们由特定的语句定义符组成,C语言有九种控制语句。
可分为以下三类:
条件判断语句也叫分支语句:if语句,switch语句;循环执行语句:do while 语句、while语句、for语句;转向语句:break语句、goto语句、continue语句、return语句。 代码语言:c代码运行次数:0运行复制//int main()
//{
// //printf("hello C\n");//""括起来的是一个字符串
// //printf("你好,C语言\n");
// //printf("你好,翠花\n");
// //printf("hello world\n");
//
// //printf("%c", 'q'); //''括起来的是一个字符
// //printf("%d", 123);
// //printf("%f", 3.5);//%f 是用来打印小数的,打印是默认小数点后打印6位
// //指定格式来打印数数据
// //printf - print + format
// //
// printf("hehe");
// return 0;
//}
//main函数的其他写法
//这种写法是非常古来的写法 - 在图书馆中发黄的书上才能看到了 - 不建议
//void main()
//{
//
//}
//void 是无(空)的意思,main函数执行结束后什么都不返回
//这种写法也行
//int main(void)//void 是无(空)的意思,这里表示main函数是不需要参数的
//{
// return 0;
//}注释是什么,为什么写注释注释就是解释的意思,程序员在写一些复杂且长的代码的时候,有时候过一段时间再看前面的代码可能就会看不懂了,这时候注释就发挥作用了,//后加你要备注的东西就是一串注释了,这在代码的学习中是非常重要的。常见的注释还有/*..........*/(早期的C语言注释,可以分行,在代码内部也可以注释,但有一个缺点,不支持嵌套注释,即注释里面不能套注释),也可以批量注释,下图是批量注释的位置,选中你想注释的内容,点击即可,注释是不参与程序运行的,对实际代码没有影响,你可以理解为一个”深情的舔狗“,哈哈可能不太恰当,无意冒犯。特别提醒,无论哪一种注释,都不能放到双引号里,双引号里的注释符号,会成为字符串的一部分,解释为普通符号,失去注释作用。(小补充,编译时,注释会被替换成一个空格)。
在这里插入图片描述好了,今天的技术分享就写到这里,后面小帅应该会写的更加简略,没有这么详细了,因为这更多是一个自己对技术的认知记录,不是0基础教学,而且小帅本身的课业也很重,喜欢小帅内容的帅哥集美们点点关注呀!