第1讲 C语言常见概念
1 C语言是什么?
⼈和⼈交流使⽤的是⾃然语⾔,如:汉语、英语、⽇语
人和计算机之间使用计算机语言交流
2 C语言的历史和辉煌
C语言最初是作为Unix系统的开发工具而发明的
3 编译器的选择VS2022
- 解释型语言:Python
- 编译型语言:C/C++
3.1 编译和链接
C语言是一门编译型语言C语⾔源代码都是⽂本⽂件,⽂本⽂件本⾝⽆法执⾏,必须通过编译器翻译和链接器的链接,⽣成⼆进制的可执⾏⽂件,可执⾏⽂件才能执⾏。
C语⾔代码是放在.c为后缀的⽂件中的,要得到最终运⾏的可执⾏程序,中间要经过编译和链接2个过程。
(1) 一个工程一般都会又多个源文件组成,下图表示源程序经过编译器和连接器处理的过程
【注】:
- 每个源文件(.c)单独经过编译器处理生成对应的目标文件(.obj为后缀的文件)
- 多个目标文件和库文件经过链接器处理生成对应的可执行程序(.exe文件)
这样就是在Windows电脑上C语言程序生成的exe可执行文件
3.2 编译器的对比
集成开发环境(IDE)⽤于提供程序开发环境的应⽤程序,⼀般包括代码编辑器、编译器、调试器和图形⽤⼾界⾯等⼯具。集成了代码编写功能、分析功能、编译功能、调试功能等⼀体化的开发软件服务套。
IDE选择:VS2022
3.3 VS2022的优缺点
优点:
- VS2022是⼀个主流的集成开发环境,企业中使⽤较为普遍
- VS2022包含了:编辑器+编译器+调试器,功能强⼤
- 直接安装即可使⽤,基本不⽤额外配置环境,上⼿容易
- 默认界⾯是中⽂的,初学者友好
缺点:
- 功能丰富,安装包⼤,占⽤空间多
4 VS项目和源文件、头文件介绍
.c:源文件
.h:头文件
5 第一个C语言程序
5.1 VS2022初步使用
(1)创建项目
(2)创建空项目
(3)设置好名称与路径,点击创建即可
5.2 使用VS2022创建程序
(1)创建源文件
(2)注意名称要修改为 .c
(3)Hello World
#include <stdio.h>
int main() //main函数前int的意思是,main函数执行完会返回一个整数,目前常见的固定写法
{
printf("Hello World!!\n");//双引号括起来的就是一个字符串
return 0;
}
6 main函数
- main函数是主函数
- C语言的程序都是从main函数的第一行开始执行的
- main函数是程序的入口
- main函数有且只能有一个
- 即使一个项目中有多个.c文件,但是只能有一个main函数(因为程序的入口只能有一个)
- main函数内一条语句结束后需要+“;”(英文状态)
(1)main函数的多种写法
//1.旧式的写法 -- 不推荐了
void main()
{
}
//2.旧式的写法 -- 不推荐了
void main(void)
{
}
//3.这里的void表示main函数不接受任何参数 -- 也行
int main(void)
{
return 0;
}
//4.也是对的,很少使用
int main(int argc, char* argv[], char* envp[])
{
return 0;
}
//5.不合格的
main()
{
return 0;
}
7 printf和库函数
(1)printf函数
-
是一个库函数,实现在屏幕上信息的打印
-
#include <stdio.h> int main() { printf("Hello World\n");//打印字符串 printf("%d\n", 100);//打印整型 printf("%c\n", 'X');//打印字符,单引号引起的是字符 printf("%f\n", 3.14);//%lf打印双精度浮点型,%f是打印单精度类型 }
-
printf是库函数,库函数的使用得包含对应的头文件,printf函数的头文件是stdio.h
(2)库函数
- 为了不再重复实现常见的代码,C语言标准规定了一组函数,这些函数再由不同的编译器厂商根据标准进行实现,提供给程序员用
- 这些函数组成了一个标准库,被称为标准库,这些函数也被称为库函数。
- 一个系列的库函数一般会声明在同一个头文件中,所以库函数的使用,要包含对应的头文件
- 库函数参考链接
8 关键字介绍
- 关键字都有特殊的意义,是保留给C语言使用的
- 程序员自己在创建标识符的时候是不能和关键字重复的
- 关键字也是不能自己创建的
C语言中常见的32个关键字:
1 auto break case char const continue default do double else enum extern 2 float for goto if int long register return short signed sizeof static 3 struct switch typedef union unsigned void volatile while
在平时学代码的时候,我们定义变量时尽量不要与之同名
9 字符和ASCII编码
C语言中的字符都是用单引号引起的,例如:‘a’,‘b’,‘@’
(1)ASCII码表地址
(2)掌握几组特殊的数据:
- 字符A~Z的ASCII码值从65-90
- 字符a~z的ASCII码值从97-122
- 对应的大小写字符(a到A)的ASCII码值的差值是32
- 数字0~9的ASCII码值从48-57
- 换行的ASCII码值是:10
- 在这些字符中ASCII码值从0-31这32个字符是不可打印字符,无法打印在屏幕上观察
(3)对于单个字符的打印可以用%c来表示
#include <stdio.h>
int main()
{
printf("%c\n", 'q');
printf("%c\n", 113);
return 0;
}
//可打印字符展示
#include <stdio.h>
int main()
{
int i;
for (i = 32; i < 128; i++) {
printf("%c ", i);
}
return 0;
}
10 字符串和\0
在C语言中:使用双引号引起的一串字符称为字符串,如"abcdef"就是一个字符串
打印格式:
C语言中字符串的打印格式①可以使用"%s"表示,②也可以直接打印
#include <stdio.h>
int main()
{
printf("abcdef\n");
printf("%s\n", "abcdefg");
return 0;
}
C语言字符串中特别的地方,就是在字符串的末尾隐藏放着一个 \0 的字符,这个 \0 字符是字符串的结束标志
遇到 \0 就自动停止了
10.1 验证 \0
//数组 - 就是一组数据
#include <stdio.h>
int main()
{
char arr1[] = "abc";
char arr2[] = {'a','b','c'};
printf("%s\n",arr1);
printf("%s\n",arr2);
return 0;
}
由运行结果可看出arr1由结束标志\0,而arr2没有,所以arr2运行就不会结束,就会出乱码
加\0结束标志后,运行就会在结束标志停止
11 转义字符
C语言中常见的转义字符:
名称 | 作用 |
---|---|
? | 在书写连续多个问号时使用,防止他们被解析成三字母词,在新的编译器上没法验证了 |
\’ | 用于表示字符常量’ |
\‘’ | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\a | 警报,使终端发出警报声或出现闪烁,或者两者同时发生 |
\b | 退格键,光标回退一个字符,但不删除字符 |
\f | 换页符,光标移到下一页(行为类似\v) |
\n | 换行符 |
\r | 回车符,光标移到同一行的开头 |
\t | 制表符,光标移到下一个水平制表位,通常是下一个8的倍数 |
\v | 垂直分隔符,光标移到下一个垂直制表位,通常是下一行的同一列 |
字符的8进制和16进制的表现形式:
- \ddd: ddd表示1~3个八进制数字。如:\130 表示字符X
- \xdd: dd表示2个十六进制数字。如:\x30 表示字符0
\0: null字符,代表没有内容,\0就是\ddd这类转义字符的一种,用于字符串的结束标志,其ASCII码值是0
12 语句和语句分类
C语言中的代码是由一条条语句构成的,其中语句分为5类,分别是:空语句、表达式语句、函数调用语句、复合语句、控制语句。
12.1 空语句
空语句就是最简单的,一个分号就是一条语句,是空语句
12.2 表达式语句
表达式语句就是在表达式后面加上分号
12.3 函数调用语句
函数调用的时候,也会加上分号,就是函数调用语句
12.4 复合语句
复合语句其实就是前面讲过的代码块,成对括号中的代码就构成一个代码块,也被称为复合语句
12.5 控制语句
控制语句用于程序的执行流程
- 条件判断语句(分支语句):if,switch
- 循环执行语句:do while,while,for
- 转向语句:break,goto,continue,return
13 注释是什么,为什么写注释?
注释是对代码的说明,编译器会忽略注释,也就是说,注释对实际代码没有影响。
注释是给程序员自己,或者其他程序员看的。
好的注释可以帮我们更好的理解代码,但是也不要过度注释,不要写没必要的注释。
当然不写注释可能会让后期阅读代码的人抓狂。
写注释⼀定程度上反应了程序作者的素质,建议大家写必要的注释,在未来找工作的时候,写代码时 留下必要的注释也会给面试官留下更好的印象。