✨前言
C语言系列:博主是初次做这种,可能有一些不足之处,希望大家帮忙指出!说明一下该系列是对c语言从0到1的介绍😶🌫️,后续我会出汇总篇进行全面的综合整理。作为一个系统的教程,这个系列会持续推新的,所以关注博主🍻,在学习C语言的路上结伴前行吧!
🐶📑作者:@ Serein橘橘橘
🐶🐋专栏:C语言
🐶👤资源推荐:C语言程序设计从入门到进阶
🐶🚀一句话:该做的只求结果,想做的只问本心
文章目录
一、工具的选择🔦
工欲善其事,必先利其器 ------ 正确的编译器会让我们事半功倍!
集成开发环境 ------ 选择VS2022
• VS2022是⼀个主流的集成开发环境,企业中使⽤较为普遍
• VS2022包含了:编辑器+编译器+调试器,功能强⼤
• 直接安装即可使⽤,基本不⽤额外配置环境,上⼿容易
• 默认界⾯是中⽂的,初学者友好
为什么不是其他集成开发环境(IDE)?
• CodeBlocks集成了gcc(这个⼯具⽐较⼩众,需要配置环境,不太推荐)
• DevC++集成了gcc(⼩巧,但是⼯具过于简单,对于代码⻛格的养成不好,⼀些竞赛使⽤)
• Clion是默认使⽤CMake,编译器是可以配置的(⼯具是收费,所以暂时不 推荐⼤家使⽤)
👉工具的下载安装:VS2022安装教程
( 视频肯定比博主讲的更清楚啦,大家按照视频安装就好 )
二、第一个C语言程序🎃
代码如下(示例):
#include <stdio.h>
int main()
{
printf("hello world");
return 0;
}
在上述程代码中出现了main函数、printf函数等,下面将会详细阐述。
三、main函数🧢
main函数也叫 主函数
main前面的 int 表示 main函数执⾏结束的时候返回⼀个整型类型的值。所以在 main函数的最后写 return 0; 正好前后呼应。
• main函数是程序的⼊⼝ — C语言程序从main函数的第一行开始执行
• main函数 有且仅有⼀个
• 即使⼀个项⽬中有多个.c⽂件,但是只能有⼀个main函数(因为程序的⼊⼝只能有⼀个)
( 相信你对上面没提到的细节有些疑惑,但还是那句话,先接受现有的知识,其他的以后都会懂🤪)
四、printf和库函数🍰
库函数: C语言标准规定的一组函数组成了一个函数库(标准库),这些函数被称为库函数。使用库函数时,需要包含头文件。引用的方式是 #include< xx.h >,xx指该库函数对应的头文件。
上述程序的printf就是一个库函数, 接下来我们认识一下😃
print的功能:在标准输出设备(⼀般指屏幕)上进⾏信息的打印。
#include <stdio.h>
int main()
{
printf("%d\n", 100);//%d - 打印整数
printf("%c\n", 'a');//%c - 打印字符
printf("%f\n", 3.14);//%f - 打印小数 - 默认小数点后会打印6位
printf("%lf\n", 3.14); //打印双精度浮点型
printf("%s\n", "abcdef");//%s - 打印字符串
printf("abcdef\n");//"abcdef" - 双引号括起来的一串字符称为:字符串
return 0;
}
这里的%d,%c等是占位符,会被后边的值替换。( 还是那句话,后续会具体介绍)
👉库函数⽐较多,可参考链接:https://cplusplus.com/reference/clibrary/
五、关键字👾
关键字又称为保留字。
不能自创,创建标识符时不能和关键字重复
C语⾔的32个关键字如下:👉 (全:C 关键词 - cppreference.com)
Tip: 在C99标准中加入了:inline、restrict、_Bool、_Complex、_Imaginary
六、字符和ASCII码表🐼
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🦔
C语言中使⽤双引号括起来的⼀串字符就被称为字符串
字符串的打印格式可以使⽤%s 来指定,也可以直接打印如下:
#include <stdio.h>
int main()
{
printf("%s\n", "hello C");
printf("hello c");
return 0;
}
在字符串的末尾隐藏放着⼀个\0字符,这个\0字符是字符串的结束标志
C语⾔中可以把⼀个字符串放在⼀个字符数组中,我们在这⾥利⽤以下代码验证:
#include <stdio.h>
int main()
{
char arr1[] = {'a', 'b', 'c'};//arr1数组中存放3个字符
char arr2[] = "abc"; //arr2数组中存放字符串
printf("%s\n", arr1);
printf("%s\n", arr2);
return 0;
}
现在按F10调试 来观察arr1和arr2的内容。敲黑板❗一定要进入调试状态
,不然看不到
通过调试,我们可以观察到\0的存在😐
运行结果:
• arr1 字符数组在打印的时候,打印了a、b、c后还打印了⼀些随机值,这就是
因为arr1在末尾的地⽅没有\0字符作为结束标志,在打印的时候没有停⽌。
• arr2的打印就是完全正常的,就是因为arr2 数组是使⽤字符串常量初始化的,数组中有\0作为结束标志,打印可以正常停⽌。
如果我们在arr1数组中单独放⼀个’\0’字符会怎么样呢?
由上可见:三次打印的结果一样,都是打印到\0的时候就停⽌了
八、转义字符🐉
引入:我们现在猜测一下下面的结果是什么
#include<stdio.h>
int main()
{
printf("c:\test\test.c");
return 0;
}
来揭晓答案😉
为什么会这样呢?其实就是转义字符在作怪。那到底什么是转义字符👈
转义字符
顾名思义:转变原来的意思的字符
C语⾔中像这样的转义字符还有⼀些,具体如下:
转义字符 | 意义 |
---|---|
\? | 在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词 |
\’ | ⽤于表⽰字符常量’ |
\" | ⽤于表⽰⼀个字符串内部的双引号 |
\\ | ⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符 |
\a | 警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣ |
\b | 退格键,光标回退⼀个字符,但不删除字符 |
\f | 换⻚符,光标移到下⼀⻚。在现代系统上,这已经反映不出来了,⾏为改成类似于\v |
\t | 制表符,光标移到下⼀个⽔平制表位,通常是下⼀个4/8的倍数( 对齐 ) |
\v | 垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀⾏的同⼀列 |
\ddd | ddd表⽰1~3个⼋进制的数字 |
\xdd | dd表⽰2个⼗六进制数字 |
\0 | null字符,代表没有内容,\0就是\ddd这类转义字符的一种,用于字符串的结束标志,其ASCII码值是0 |
C语言支持三字母词:
??) 解析为 ]
??( 解析为 [
??> 解析为 }
??< 解析为 {
现在我们用代码来演示一下
#include <stdio.h>
int main()
{
printf("(are you ok??)");//本意想打印(are you ok??)
//运行结果:(are you ok]
return 0;
}
习题🐰:
#include <stdio.h>
int main()
{
printf("%zd\n", strlen("c:\test\bit\118\test.c"));
return 0;
}
答案:17
解析:①一个转义字符虽然由多个符号组成,但计算字符个数时,当成一个
②\118虽然有三个数字,但8不可能是8进制的数字,所以看作\11和8
c : \t e s t \b i t \11 8 \t e s t . c -------- 共17个
十进制:0~9
二进制:0和1
八进制:0~7
十六进制:0~15(f)
九、语句和语句分类🐨
C语⾔的代码是由⼀条⼀条的语句构成的,C语⾔中的语句可为以下五类:
• 空语句
• 表达式语句
• 函数调⽤语句
• 复合语句
• 控制语句
1.空语句
空语句是最简单的,⼀个分号就是⼀条语句
,是空语句
#include <stdio.h>
int main()
{
;//空语句
return 0;
}
空语句 ⼀般出现的地⽅是:这⾥需要⼀条语句,但是这个语句不需要做任何事
2.表达式语句
表达式语句就是在表达式的后边加上分号
#include <stdio.h>
int main()
{
int a = 20;
int b = 0;
b = a + 5; //表达式语句
return 0;
}
3.函数调用语句
函数调⽤的时候,也会加上分号
,就是函数调⽤语句
#include <stdio.h>
int Add(int x, int y)
{
return x+y;
}
int main()
{
printf("hehe\n");//函数调⽤语句
int ret = Add(2, 3);//函数调⽤语句
return 0
}
4.复合语句
复合语句其实就是代码块,成对括号中的代码就构成⼀个代码块
,也被称为复合语句
#include <stdio.h>
void print(int arr[], int sz) //函数的⼤括号中的代码也构成复合语句
{
int i = 0;
for(i=0; i<sz; i++)
{
printf("%d ", arr[i]);
}
}
int main()
{
int i = 0;
int arr[10] = {0};
for(i=0; i<10; i++) //for循环的循环体的⼤括号中的就是复合语句
{
arr[i] = 10-i;
printf("%d\n", arr[i]);
}
return 0;
}
5.控制语句
控制语句⽤于控制程序的执⾏流程,以实现程序的各种结构⽅式
(C语⾔⽀持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语⾔有9种控制语句
- 条件判断语句 / 分⽀语句:if语句、switch语句;
- 循环执⾏语句:dowhile语句、while语句、for语句;
- 转向语句:break语句、goto语句、continue语句、return语句
( 相信你对上面没提到的细节有些疑惑,但还是那句话,先接受现有的知识,其他的以后都会懂🤪)
十、注释☃️
注释是对代码的说明,编译器会忽略注释
,so 注释对实际代码没有影响
1. / *… */的形式
将注释放在/…/之间,内部可分行,可插在行内,不支持嵌套注释
2. //的形式(推荐)👈
将注释放在//之后,单行,可放在行首/结尾
Tip: 不管是哪⼀种注释,都不能放在双引号⾥⾯
。双引号⾥⾯的注释符号,会成为字符串的⼀部分,解释为普通符号,失去注释作⽤
注释会被替换成一个空格
注释的快捷键:Ctrl + /
✨总结
写到这里偷摸说已经六千多字了(Markdown里),初次写文难免有不足之处,但还是感谢你的耐心阅读,我会继续努力的!😝都看到这里了,给博主我个一键三连吧!!!感谢你的支持!!!
戳这里👉C语言系列已更新——数据类型和变量