目录
1.C语言是什么
人与人交流用自然语言,那么人与计算机呢?使用计算机语言。C语言就是众多机器语言中的一种。
2.编译器
2.1编译和链接
C语言源代码是文本文件,本身无法执行,需经过编译和链接生成二进制的可执行文件才可执行。
注:1.每个源⽂件(.c)单独经过编译器处理⽣成对应的⽬标⽂件(.obj为后缀的⽂件)
2. 多个⽬标⽂件和库⽂件经过链接器处理⽣成对应的可执⾏程序(.exe⽂件)
2.2编译器的选择
1.选择:首推VS2022。
2.VS2022的安装教程:https://www.bilibili.com/video/BV11R4y1s7jz/
3.VS项目和源文件、头文件
1.在VS中写代码时需要创建项目,此时直接新建项目即可。
2.源文件:后缀为.c。
3.头文件:后缀为.h。
4.第一个C程序
#nclude<stdio.h>
int main()
{
printf("hello c\n");
return 0;
}
注:在VS2022中运行快捷键:ctrl+f5。
5.main函数
main函数又被称为函数的主函数,它是函数的入口,一个c程序无论有多少代码main函数只能有一个,程序从main函数开始执行也从main函数结束。读代码时从main函数处开始读。
1.main函数是程序的入口;
2.无论一个程序代码有多少行,main函数有且只有一个;
3.即使一个项目中有多个.c文件main函数还是有且只有一个。
6.printf和库函数
6.1printf
printf 是⼀个库函数,它的功能是在标准输出设备(⼀般指屏幕)上进⾏信息的打印。
例如:
#nclude<stdio.h>
int main()
{
printf("hello c\n");
return 0;
}
经打印后能在屏幕上看到:hello c
只要把想要打印的⼀串字符放在双引号中并传递给printf函数就可以打印。
注:库函数的使用需包含头文件,⽐如: printf 函数需要包含的就是 stdio.h 这个头⽂件。
6.2认识库函数
为提高程序员开发效率,C语⾔标准规定了⼀组函数(它不提供这个函数只是提供一个标准),这些函数再由不同的编译器⼚商根据标准进⾏实现,提供给程序员使⽤。这些函数组成了⼀个函数库,被称为标准库,也被称为库函数。
注:库函数的使用要包含对应的头文件。
了解https://cplusplus.com/reference/clibrary/
7.C关键字
C语言的关键字是保留个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
3.struct switch typedef union unsigned void volatile while
注:define是VS的关键字不是C语言的关键字。
C语言全部关键字介绍:https://zh.cppreference.com/w/c/keyword
8.字符和ASCLL编码
1.字符:C语⾔中字符是⽤单引号括起来的,如:‘a’,‘b’,‘@’。
2.ASCLL码表:
参考:https://zh.cppreference.com/w/cpp/language/ascii
几组特殊ASCLL码值:
1.字符A-Z的ASCII码值从65-90
2.字符a-z的ASCII码值从97-122
3.对应的⼤⼩写字符(a和A)的ASCII码值的差值是32
4.数字字符0-9的ASCII码值从48-57
5.换⾏ \n 的ASCII值是:10
6.在这些字符中ASCII码值从0~31 这32个字符是不可打印字符,⽆法打印在屏幕上观察
9.字符串和\0
9.1字符串
·使⽤双引号括起来的⼀串字符就被称为字符串,如:“abcdef”。
·字符串打印用%s。
9.2 \0
·字符串的末尾隐藏放着⼀个 \0 字符,这个 \0 字符是字符串的结束标志。例如:对于字符串"abcdef",我们实际上看到了6个字符:a,b,c,d,e,f,但是实际上在末尾还隐藏⼀个 \0 的转义字符。
·\0 是字符串的结束标志。所以我们在使⽤库函数 printf() 打印字符串或者strlen() 计算字符串⻓度的时候,遇到 \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 字符数组在打印的时候,打印了 a 、 b 、 c 后还打印了⼀些随机值,这就是因为 arr1 在末尾的地⽅没有 \0 字符作为结束标志,在打印的时候没有停⽌。
10.转义字符
•\ ? :在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词,在新的编译器上没法验证了。
• \’ :⽤于表⽰字符常量’
•\ " :⽤于表⽰⼀个字符串内部的双引号
• \ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。
• \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
11.语句和语句分类
C语言语句分以下五类:
• 空语句
• 表达式语句
• 函数调⽤语句
• 复合语句
• 控制语句
11.1空语句
#include <stdio.h>
int main()
{
;//空语句
return 0;
}
11.2表达式语句
#include <stdio.h>
int main()
{
int a = 20;
int b = 0;
b = a + 5; //表达式语句
return 0;
}
11.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;
}
11.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;
}
11.5控制语句
控制语句⽤于控制程序的执⾏流程,以实现程序的各种结构⽅式(顺序、选择、循环)。
控制语句分以下三类:
1.条件控制语句(分支语句):if语句、switch语句;
2.循环语句:do while语句、while语句、for语句;
3.转向语句:break语句、goto语句、continue语句、return语句。
12.注释
注释有两种形式:/**/和//
12.1 /**/
将注释内容放在/*```*/中,其内容可分行
12.2 //
将注释内容放在//后,但这种注释只能是单行
注:不论是上面那种注释,都不能放在双引号中。