文章目录
一、C语言是什么
1、C语言是什么
C语言是人和计算机交流的语言,即计算机语言,当然计算机语言还有C++/Java/Go/Pathon等。
2、C语言的辉煌历史
3、编译器的选择
3.1编译和链接
C语言是一门编译型语言,C语言源代码都是文本文件,文本文件本身无法执行,必须通过编译器的翻译和链接器的连接,生成二进制的可执行文件,可执行文件才能执行。如下图(其中以.obj为后缀的是目标文件):
C语言的代码是放在.c为后缀的文件中,C++是放在.cpp为后缀的文件中。
3.2编译器的对比
1、编译器和集成开发环境的区别
编译器:msvc(微软开发),clang(苹果开发),gcc;集成开发环境:VS2022,Xcode,CodeBlocks,DevC++,Clion等(集成开发环境是包含代码编辑器、编译器、调试器、图形用户界面等工具)。
2、几种集成开发环境的比较
• VS2022 集成了MSVC(安装包较大一些,安装简单,无需多余配置,使用起来非常方便)
• XCode 集成了clang(苹果电脑上的开发工具)
• CodeBlocks 集成了gcc(这个工具比较小众,需要配置环境,不太推荐)
• DevC++ 集成了gcc(小巧,但是工具过于简单,对于代码风格的养成不好,⼀些竞赛使用)
• Clion 是默认使用CMake,编译器是可以配置的(工具是收费,所以暂时推荐大家使用)
4、VS项目和源文件、头文件介绍
1、使用VS2022写出C语言程序的步骤:a.创建项目 b.创建源文件 c.写代码
2、源文件:.c为后缀的文件;头文件:.h为后缀的文件
5、第一个C语言程序
#include<stdio.h>
int main ()
{
printf("Hello C\n");
return 0;
}
*在VS2022上运行代码的快捷键:Ctrl+f5
6、main函数
1.代码都是从main函数开始执行的,main函数是程序的入口,所以main函数也叫主函数。
2.main函数有且仅有一个。
3.即使一个项目中有多个.c文件,但是只能有一个main函数。
4.main函数的位置是任意的。
5.main函数的基本写法:
int main()
{
return 0;
}
7、库函数
为了不再重复实现常见的代码,让程序员提升开发效率,C语言标准规定了⼀组函数,这些函数再由不
同的编译器厂商根据标准进行实现,提供给程序员使用。这些函数组成了⼀个函数库,被称为标准
库,这些函数也被称为库函数。在这个基础上⼀些编译器厂商可能会额外扩展提供部分函数(这些函
数其他编译器不⼀定支持)。
⼀个系列的库函数⼀般会声明在同⼀个头文件中,所以库函数的使用,要包含对应的头文件。
库函数的介绍添加链接描述
8、关键字介绍
1、关键字
关键字都有特殊的意义,是保留给C语言使用的
程序员自己在创建标识符的时候是不能和关键字重复的
关键字也是不能自己创建的。
2、C语言中的32个关键字
auto break case char const continue default do double else enum extern float for goto if int long register
return short signed sizeof static struct switch typedef union unsigned void volatile while
注:添加链接描述(C语言关键字的全部介绍)
9、字符和ASCLL编码
ASCLL码表
ASCLL码表可参考该链接:添加链接描述
ASCLL码表要掌握的几组特殊数据
• 字符 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’-字符0,值为48;0-数字0,值为0
#include<stdio.h>
int main()
{
printf("%c\n",'Q');
printf("%c\n",81);
return 0;
}
两种方式打印出来的结果是一样的
10、字符串和\0
1、使用双引号括起来的一串字符被称为字符串,字符串的打印用%s或直接打印,字符的打印用%c。
例如:
#included<stdio.h>
int main()
{
printf("%s\n","abcdf");
printf("abcdf\n");
return 0;
}
两种方式运行的结果是一样的
2、C语言字符串中一个特殊的标识,就是字符串的末尾隐藏着一个\0字符,这个\0字符是字符串结束的标志。
例如:
#include<stdio.h>
int main()
{
char arr1[]={'a','b','c'};
char arr2[]="abc";
printf("%s\n",arr1);
printf("%s\n",arr2);
return 0;
}
分析如下:
arr1中只存放了三个字符,在末尾的地方没有存放\0,打印的时候没有停止;arr2中是使用字符串常量初始化,数组末尾处隐藏这\0,可以结束打印。
11、转义字符
转义字符:转变原来的意思的字。
以下是一些常见的转义字符:
? :在书写连续多个问号时使用,防止他们被解析成三字母词,在新的编译器上没法验证了。
例如:连续使用???可能会被解析成】。
’ :用于表示字符常量’。
例如:printf(“%c”,“'”);-打印’在屏幕上。
" :用于表示⼀个字符串内部的双引号。
例如:printf(“%s”,“”");-打印"在屏幕上。
\ :用于表示⼀个反斜杠,防止它被解释为⼀个转义序列符。
例如:printf(“c:\test\test.c”);-才可打印出c:\test\test.c,若printf(“c:\test\test.c”);-屏幕上不会打印出正确结果。
\a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生。
\b :退格键,光标回退⼀个字符,但不删除字符。
\f :换页符,光标移到下⼀页。在现代系统上,这已经反映不出来了,行为改成类似于 \v 。
\n :换行符。
\r :回车符,光标移到同⼀行的开头。
\t :制表符,光标移到下⼀个水平制表位,通常是下⼀个4/8的倍数。
\v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀行的同⼀列。
下面2种转义字符可以理解为:字符的8进制或者16进制表示形式
\ddd :d d d表示1~3个八进制的数字。 如: \130 表示字符X。(把八进制转化成十进制并且用ASCLL码表示出来)
例如:\130中0——八的0次方,3——八的1次方,1——八的2次方;所以转换成十进制为88,对应ASCLL中的X。
\xdd :d d表示2个十六进制数字。 如: \x30 表示字符0。(把十六进制转换成十进制并且用ASCLL码表示出来)
\0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,用于字符串的结束标志,其
ASCII码值是0。
注意:十进制是0-9,八进制是0-7,二进制是0-1
转义字符参考:添加链接描述
12、语句和语句分类
C语言是由一条条语句构成的,C语言中语句可以分为以下五类:
1.空语句
2.表达式语句
3.函数调用语句
4.复合语句
5.控制语句
12.1空语句
一个分号就是一条语句,空语句一般出现在:这里需要一个语句,但是这个语句不需要做任何事。
12.2表达式语句
表达式语句就是在表达式后面加上一个分号。(例:b=a+5;)
12.3函数调用语句
函数调用的时候也会加上一个分号就是函数调用语句。(例:int ret =Add(2,3);)
12.4复合语句
复合语句就是代码块,成对大括号中的代码就构成一个代码块,也就是复合语句。
12.5控制语句
C语言中的九种控制语句:
- 条件判断语句也叫分支语句:if语句、switch语句;
- 循环执行语句:do while语句、while语句、for语句;
- 转向语句:break语句、goto语句、continue语句、return语句。
13、注释
注释的含义:注释是对代码的说明,编译器会忽略注释。
13.1注释的两种形式
1、/**/的形式
将注释放在其中间,内部可以分行,但是不支持嵌套注释,即/*开始注释后,遇到第一个就认为注释结束了。
2、//的形式
将注释放在//的后面,从//到行尾都属于注释,但是这种注释只能是单行,可以放在行首,也可以放在行尾。
注意:两种注释都不可以放在双引号里面。
13.2注释会被替换
编译时注释会被替换成一个空格。