一.C语言常见概念
1.C语言的概念与历史
C语言是众多语言中的一种,可以达到人和计算机的交流,至今有着很多发展与辉煌。
2.编译器的选择VS2022
C语⾔是⼀⻔编译型计算机语⾔,C语⾔源代码都是⽂本⽂件,⽂本⽂件本⾝⽆法执⾏,必须通过编译器翻译和链接器的链接,⽣成⼆进制的可执⾏⽂件,可执⾏⽂件才能执⾏。
C语言的代码一般都是以.c文件为后缀的,要经过编译和链接才能最终形成可执行文件。
注:
1.每个源文件(.c)单独经过编译器处理生成目标文件(.obj)
2.多个目标文件和库文件经过链接器处理生成可执行文件(.exe)
经过综合考虑,我们选取VS2022为编译器,社区版本免费,使用方便,在工作中较常见。
VS2022安装版本教程:https://www.bilibili.com/video/BV11R4y1s7jz/
3.VS项目和源文件、头文件的介绍
打开VS,点击新建项目,就可以新建一个项目,我们即可进行编码。
一个项目中包含了头文件与源文件。
在C语言中我们把 .c 文件称为源文件,.h文件称为头文件。
4.第一个C语言程序
#include <stdio.h>
int main() {
printf("Hello World!");
return 0;
}
在VS2022上运行代码的快捷键:ctrl+F5。
每个C语言程序不管有多少行代码,都有且仅有一个main函数,main函数也称为主函数,它是程序的入口,函数都是从main开始执行的。可以看到main函数前面有个int返回值,代表返回类型为整形,因此在最后加上return 0 ;前后呼应。
注:
1.main函数有且仅有一个
2.即使⼀个项⽬中有多个.c⽂件,但是只能有⼀个main函数(因为程序的⼊⼝只能有⼀个)
这里的printf是C语言自带的库函数,可以打印双引号当中的内容,它也可以打印其他类型的数据。
printf("成绩为:%d",score);
这里的%d为占位符,会被后面的值所替代。
使用库函数时,我们需要包含头文件。比如这里的printf函数就需要包含stdio.h头文件。
C语言中包含着许多头文件,了解可参考相关链接:https://cplusplus.com/reference/clibrary/
5.C语言的关键字
1.关键字都有着特殊含义,是保留给C语言使用的
2.程序员⾃⼰在创建标识符的时候是不能和关键字重复的
3.关键字也是不能⾃⼰创建的。
C语言的32个关键字如下:
6.字符相关知识
6.1 字符
在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤单引号括起来的,如:‘a’,‘b’,‘@’。
C语言的字符遵循了以下ASCII编码的方式。
参考链接:https://zh.cppreference.com/w/cpp/language/ascii
我们可以不用记住这些数字,当使用时查找便可。
单个字符的打印可以用%c来指定格式
#include <stdio.h>
int main()
{
printf("%c\n", 'Q');
printf("%c\n", 81);//这⾥的81是字符Q的ASCII码值,也是可以正常打印的
return 0;
}
6.2 字符串
在C语言中用双引号括起来的一串字符就被称为字符串,字符串可以用%s来打印,也可直接打印。
#include <stdio.h>
int main()
{
printf("%s\n", "hello C");
printf("hello c");
return 0;
}
注:
C语⾔字符串中⼀个特殊的知识,就是在字符串的末尾隐藏放着⼀个 \0 字符,这个 \0 字符是字符串的结束标志。
6.4 转义字符
在字符中有一部分特殊的字符称为转义字符,顾名思义为转变原来字符的意思,比如\n。这就是转义字符的问题, \n 是⼀个转义字符表⽰换⾏的意思,我们可以简单的理解为 \ 让 n 的意思发⽣了转变, n 本来是⼀个普通的字符,被 \ 转义为换⾏的意思。
C语⾔中像这样的转义字符还有⼀些,具体如下:
\ ? :在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词,在新的编译器上没法验证了。
\’ :⽤于表⽰字符常量’
\" :⽤于表⽰⼀个字符串内部的双引号
\\ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。
\a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。
\b :退格键,光标回退⼀个字符,但不删除字符。
\f :换⻚符,光标移到下⼀⻚。在现代系统上,这已经反映不出来了,⾏为改成类似于 \v 。
\n :换⾏符。
\r :回⻋符,光标移到同⼀⾏的开头。
\t :制表符,光标移到下⼀个⽔平制表位,通常是下⼀个8的倍数。
\v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀⾏的同⼀列。
下⾯2种转义字符可以理解为:字符的8进制或者16进制表⽰形式
\ddd :d d d表⽰1~3个⼋进制的数字。 如: \130 表⽰字符X
\xdd :d d表⽰2个⼗六进制数字。 如: \x30 表⽰字符0
\0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,⽤于字符串的结束标志,其ASCII码值是0。
转义字符参考:https://zh.cppreference.com/w/c/language/escape
7. 语句和语句分类
C语⾔的代码是由⼀条⼀条的语句构成的,C语⾔中的语句可为以下五类:
• 空语句
• 表达式语句
• 函数调⽤语句
• 复合语句
• 控制语句
7.1 空语句
#include <stdio.h>
int main()
{
;//空语句
return 0;
}
7.2 表达式语句
#include <stdio.h>
int main()
{
int a = 20;
int b = 0;
b = a + 5; //表达式语句
return 0;
}
7.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;
}
7.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;
}
7.5 控制语句
控制语句⽤于控制程序的执⾏流程,以实现程序的各种结构⽅式(C语⾔⽀持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语⾔有九种控制语句。
可分成以下三类:
- 条件判断语句也叫分⽀语句:if语句、switch语句;
- 循环执⾏语句:do while语句、while语句、for语句;
- 转向语句:break语句、goto语句、continue语句、return语句。
8. 注释
1.注释是对代码的说明,编译器会忽略注释,也就是说,注释对实际代码没有影响。
2.注释是给程序员⾃⼰,或者其他程序员看的。
3.好的注释可以帮我们更好的理解代码,但是也不要过度注释,不要写没必要的注释。
注释一般有//,/**/两种形式。
/* 注释 */
/*
这是⼀⾏注释
*/
// 这是⼀⾏注释
int x = 1; // 这也是注释
注:
不管是哪⼀种注释,都不能放在双引号⾥⾯。
双引号⾥⾯的注释符号,会成为字符串的⼀部分,解释为普通符号,失去注释作⽤。