前言:本文基于windows系统,vs2022(配置msvc编译器)进行研讨
C语言的常见概念
踏入编程第一步,先从C语言入手。🔑
1.什么是C语言
C语言是一门通用的计算机编程语言,广泛应用于底层开发。用简单的话来讲,就是人与计算机交流的语言,其是众多计算机语言的一种,还有C++、Python、Go、Java等。
C语言是编译性的语言,需要依赖编译器才能实现相应的功能。常见的编译器有msvc、gcc、clang,但是功能太过单一,处理代码不方便,于是出现了集成开发环境(IDE),比如:Visual Studio 2022/2026、Dev C++、Xcode,他们集成了编辑器、编译器、调试器、和图形用户界面等工具,具有代码编写、分析、编译、调试等功能。
补充:vs集成了msvc,vs是windows的专属软件,只能跑在windows系统上,Dev C++集成了gcc,Xcode集成了clang。
2.第一个C语言代码
在写代码前先要能创建项目,以vs2022为例
在这里项目名称可以自命名,位置可以自定义,方便后期查看学习为主
进入此界面,打开解决方案资源管理器,右键源文件,进行新建项目
新建项目后有可能显示这个紧凑模板,这里可以修改源文件的名字,以.cpp为后缀是c++文件,写c语言文件的后缀是.c,这里将后缀更改一下,点添加,就可以写代码了
如果点击显示所有模板,就是下面这样,同样相似操作,即可开始写代码
我们的第一个代码先来简单的输出一句话:hello world! 来表达一下我们对世界的热爱
#include<stdio.h>intmain(){printf("hello world!\n");return0;}那么这份热爱是怎么具体的传递出来呢,我们细细道来
2.1main函数简介
main函数是程序的入口,代码的执行都是从main函数开始执行,所以其也被称为主函数。
一个文件里main函数有且仅有一个
一个项目如果有多个
.c文件,也只能有一个main函数main函数的结构
int代表主函数执行结束时返回值是整数,与return 0相呼应C语言默认返回0表示正常返回,返回非0表示异常,所以这里用
return 0表示程序正常结束,没有出错
2.2printf用法
printf函数是一个库函数,功能是在标准输出设备(一般指屏幕)上打印信息,调用该函数前需要包含一个头文件stdio.h,具体用法是#include<stdio.h>,里面存放有该函数的声明,只有编译器提前通过头文件知道有这个函数,才能在main函数中使用。
💪扩展那么什么是库函数呢?
标准库中的函数就是库函数,标准库是由编译器厂家1根据国家标准化组织(ISO)标准2实现相关函数,打包而成的。
标准库分为两部分:头文件(
.h)和库文件(.lib静态库/.dll动态库)
- 头文件里存放的是库函数的声明和相关数据类型的定义,文本文件,源代码形式;只是说明书,没有具体函数代码
同一个头文件中会放一系列库函数,除了有库函数的声明,还有简易介绍,比如 (stdio.h)中有printf、scanf等,(string.h)中有strlen、strcmp等- 库文件里存放的是库函数真正的实现,编译好的二进制机器代码形式
库函数众多,想要更多了解,参考链接:https://cplusplus.com/reference/clibrary/
2.3 字符和ASCII编码
在键盘上可以敲出各种符号,比如a、B、1、@、 (空格)等,这些属于可见字符,还有回车换行、退格、tab等按键,看不见,也属于字符;C语言中使用可见字符时需要使用单引号(英文模式)括起来,比如:‘1’、‘a’、’ '(空格)等,使用按键的这些字符时,也需要单引号,以转义字符的形式书写,比如:换行 ‘\n’ 等。
在计算机中所有的数据都是以二进制的形式存储在内存中的,字符也应该如此,那就需要编码,比如:'a’编码为010,'b’编码为011等,美国国家标准学会(ANSI)对这些字符统一编码,即为ASCII编码3,c语言遵循ASCII编码,得到ASCII码表,可参考链接: https://zh.cppreference.com/w/cpp/language/ascii。
常见码值:
- a ~ z 的ASCII码值是97 ~ 122,A ~ Z 的ASCII码值是65 ~ 90,相同字符大小写相差32
- 0 ~ 9 的ASCII码值是48 ~ 57
- ASCII码值为0 ~ 31的字符无法打印在屏幕上,比如:换行’\n’码值为10,不会打印出’\n’,效果是光标移动到下一行,从此再输出值
⚠️0 : 数字,内存中的值是0
⚠️’0’: 字符,内存中是ASCII码值,是48
打印字符的两种方式:printf("%c", 'F');和printf("%c", 70);
打印字符ASCII码值的方式:printf("%d", 'F');
字符参与运算用的是ASCII码值
2.4字符串和\0
C语言中用双引号(英文模式)括起来一串字符称为字符串,如:“abcdef”、"hello world"等,字符串打印的两种方式:printf("%s", "hello world");和printf("hello world");。
C语言字符串末尾藏着一个字符\0,比如:字符串"abc",表面上看是3个字符,实际上有4个字符,它是字符串结束标志,使用库函数printf()打印字符串或strlen()计算字符串的长度时,遇到\0自动停止。
通过调试,调取监视器
可以发现字符串实际的字符数里有’\0’
正常情况下,遇‘\0’停止
若不遇’\0’,会输出乱码,以字符数组存储字符串为例
存储情况
输出情况,及相关分析
所以字符串中的’\0’有着极其重要的作用,是字符串的停止开关。
2.5转义字符
转义字符,顾名思义,就是改变字符原来的意思,形式为\+内容, 比如:‘n’是个ASCII码值为110的字符,’\n’含义就变为换行了,上面所说的按键的不可见的字符,即为转义字符,下面讲解一些转义字符。
\':用于表示字符常量'
单独输入字符',会报错,无法输出,原因是前两个单引号被编译器默认配对,最后一个落单
使用转义字符\',即可输出'\":用于表示一个字符串内部的双引号
若是单独输出",这是一个字符,直接单引号就行
但是如果是在字符串中,也会出现前两个默认配对,最后一个落单,报错的情况
此时就需要转义字符\",即可输出"\\:用来表示一个反斜杠,防止被解释为转义字符
因为\+内容会被编译器解读为转义字符,导致无法输出\
使用转义字符\\,即可输出\\a:系统会发出蜂鸣声\b:退格符
按F10,启动调试,接下来继续按F10,逐行调试,当执行完含有\b的语句时,可以发现光标往前移动了一格,这就是它的效果
当执行下一行语句时,会从光标位置覆盖原先的值,如果覆盖完,再输出后面要输出的值\n:换行符
使光标移动到下一行,不一定移动到开头,这里可以移动到行首的原因是windows系统下,C标准库会把\n翻译为\r\n,使得输出效果为回车换行,电脑上的enter键就是回车换行\r:回车符
按F10调试,可以发现光标移动到这一行的开头,这是\r的效果
执行完\r语句,再执行下一行输出时,会挨个的覆盖原先的内容
覆盖完,就会有如下效果\t:制表符
把光标跳到下一个水平制表位4,输出相应内容,用来数据对齐。windows控制台5默认每8列一个制表位,相当于相邻制表位,连上字符共占8个格子
下面两种转义字符可以理解为:字符的8进制或16进制表示形式
\ddd:ddd表示1~3个8进制的数字
这个整体表示的是对应的字符\xdd:x代表后面的数字是16进制,dd是2个16进制的数字
这个整体表示的是对应的字符\0:null字符,代表没有内容,用于字符串的结束标志,ASCII码值是0
汇总:字符的几种表示方式
转义字符还有很多,可参考链接:https://zh.cppreference.com/w/c/language/escape
2.6该代码执行流程
3.语句和语句分类
C语言代码是由一条条语句构成的,可分为:①空语句 ②表达式语句 ③复合语句 ④控制语句。
3.1空语句
空语句就是一个分号,一个语句,用于需要一条语句,但不做任何事情。
#include<stdio.h>intmain(){;//空语句return0;}3.2表达式语句
表达式语句就是在表达式6后面加上分号
#include<stdio.h>intmain(){inta=10;//变量的定义+初始化intb=0;b=a+5;//表达式语句printf("%d",b);//表达式语句中的函数调用语句return0;}3.3复合语句
复合语句就是代码块,成对括号里的代码就构成一个代码块
3.4控制语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式,C语言支持三种结构:顺序结构、选择结构、循环结构。
C语言有9种控制语句,如下:
①条件判断语句或是分支语句:if语句、switch语句
②循环执行语句:do while语句、while语句、for语句
③转向语句:break语句、go to语句、continue语句、return语句
选择结构中会用到条件判断语句,循环结构中会用到循环执行语句,这些语句帮助实现相关结构,最终会帮助解决相关问题。
4.注释
注释是对代码的解释说明,必要的注释可以帮助理清条例,使代码更易于理解,但是不要过度注释,这样会喧宾夺主,重心偏移。
C语言注释有两种方式:
①\* *\:把要注释的内容放这个中间
- 一次可以注释多行
- 不支持嵌套注释
- C语言早期注释
②//:把要注释的内容放在双斜杠后
- 一次只能注释一行
- 注释选中行,快捷键Ctrl+k+c
- 取消注释,快捷键Ctrl+k+u
注意:快捷键想要一次注释多行成"//“的前提是如图全选
如果像下面这样选择,会注释成”/* */"
注释是给人看的,编译器会自动忽略。编译时,注释会被替换为空格,所以定义变量时,int maxnum;,如果写成int max/* 你好 */num;,会变成int max num;,编译器无法正确识别,所以要正确使用注释。
这一程我们大概了解了一下C语言,接下来会对C语言进行更深一步的了解,敬请期待!🎉🎯
比如 msvc编译器厂家微软、clang编译器厂家苹果等 ↩︎
设置一系列函数的基本信息,但不实现,比如
printf函数告诉你它的名字、功能、参数、返回类型,没有具体可执行代码 ↩︎将字符转换为数字存入内存的过程是编码,字符对应数字的书面内容是码表,比如:码表上’A’的十进制码值是65,把’A’的码值65存入内存就是编码 ↩︎
控制台一行上预先设定好的标记位置,
\t视觉效果类似tab键,只不过tab键的水平制表位有时以4为倍数,有时以8为倍数,且在某些环境下可设置 ↩︎
↩︎VS弹出的黑框 windows系统自带命令解释器(旧版cmd/新版PowerShell) windows控制台窗口 依托windows控制台展示界面 接受输入数据与显示文字 接受命令并解析,帮电脑启动程序(exe) 表达式是由运算符、常量、变量、函数调用组合起来,能算出一个值的式子,只能是这些元素中随便几个的相关组合 ↩︎