文章目录
C语言是什么?
C 语言是一种通用的、面向过程式的计算机程序设计语言。1972 年,为了移植与开发 UNIX 操作系统,丹尼斯·里奇在贝尔电话实验室设计开发了 C 语言。
在 1978 年,布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)制作了 C 的第一个公开可用的描述,现在被称为 K&R 标准。
学习C语言需要什么?
软件的应用
- VS2022集成了MSVC(功能齐全,缺点是安装包较大,是微软旗下的IDE编译器)
- XCode集成了clang(苹果电脑上的开发工具)
- DevC++集成了gcc(适合竞赛,安装包小,但不适合养成代码风格如今也不再更新)
- 小熊猫C++集成了gcc(在DevC++上所开发的编译器)
软件的下载链接
C语言的基本概念
- C语言是一门简单的编译型语言,它的功能也十分强大,C语言源代码都是文本文件,必须通过编译和链接才能生成二进制的可执行文件,所有后缀为(.c)都为C语言。
- test.c的文本文件想要变可执行文件首先要经过编译器的编译生成test.obj文件再经过链接器的链接最终生成了二进制的可执行文件。
- 每个源⽂件(.c)单独经过编译器处理⽣成对应的⽬标⽂件(.obj为后缀的⽂件);
- 多个⽬标⽂件和库⽂件经过链接器处理⽣成对应的可执⾏程序(.exe⽂件)。
3.第一个C语言程序
#include<stdio.h>
int main()
{
printf("hello C\n");
return 0;
}
4.main函数
每个C语⾔程序不管有多少⾏代码,都是从 main 函数开始执⾏的, main 函数是程序的⼊⼝,main 函数也被叫做:主函数。
- main函数是程序的入口
- main函数在程序中有且仅有一个
- 即使有再多的.c文件main函数也有且仅有一个(因为程序的入口只需要一个)
5. printf和库函数
printf("hello C\n");
代码中使⽤了 printf 函数,实现了在屏幕上的信息的打印.
printf 是⼀个库函数,它的功能是在标准输出设备(⼀般指屏幕)上进⾏信息的打印。上⾯的代码是使⽤ printf 函数打印字符串。只要把想要打印的⼀串字符放在双引号中并传递给printf函数就可以打印。
例如:
int main()
{
int n = 65;
printf("%d\n", n);//打印整型
printf("%c\n", n);//打印字符型
return 0;
}
这里的%c,%d是占位符,会被后面的值替换的
使用库函数的时候,需要包含头文件比如:printf的头文件是stdio.h
那什么是库函数?
库函数是为提升程序员的开发效率的,是为了不重复的实现常见代码,C语言标准所规定的一组函数,而这些函数是要一些厂商来根据C语言标准实现在他们的编译器当中来提供给程序员来使用。这些函数组成了一个库,被称为”标准库“,这些函数组也称为“库函数”。
库函数有很多,想提前了解可以通过这个链接
Cpulsplus:link
6.关键字介绍
C语言中保留了一些名字和字符,如我们常用的int,char,short等等这些名字被称为关键字或者保留字。
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语言的全部关键字介绍link
7.字符和ASCII码
在键盘上输入的a,b,c,d,@,#它们都是字符,C语言中想要使用它们就需要单引号括起来’a’,‘b’‘#’。
我们知道计算机存储的数据是以二进制的形式来的,那哪些字符怎么存储呢?
如果我们每个人都自己给这些字符进行二进制的排序,那就会造成一些不必要的混乱和相互通信,后来美国国家标准学会(ANSI)出台了⼀个标准ASCII编码,C语⾔中的字符就遵循了ASCII编码的⽅式。
记ASCII码表的方法
- ASCII码中A~Z的值是65 ~ 90
- ASCII码中a~z的值是97 ~ 122
- ASCII码中大写字母和小写字母相差32
- ASCII码中数字0 ~ 9的值是48 ~ 57
- 0 ~ 32的字符在ASCII码中是无法打印在屏幕上的
- \n的ASCII码值是 10
打印单个字符是%c打印字符串的是%s
int main()
{
char a = 65;
putchar(a);
return 0;
}
打印结果:
8.字符串和\0
我们知道C语言中字符是单引号引起来如’a’,那么字符串怎么表示呢?
使用双引号引起来的一串字符的字符称为字符串如"abcdefg"。
字符串的打印是%s
例如:
int main()
{
char ch[] = "abcdefg";
printf("%s\n", ch);
return 0;
}
打印结果:
C语言字符串有一个特殊的知识,就是每个字符串中最后的位置隐藏了一个\0字符,这个\0字符表示字符串的结束标志。
我们通过代码来看看
int main()
{
char arr1[] = "abcd";
char arr2[] = { 'a','b','c','d' };
printf("%s \n%s", arr1, arr2);
return 0;
}
打印结果:
那为什么打印结果中arr1和arr2的不同呢?而arr2的打印结果为什么是打印完abcd后还有其他的乱码呢?
我们进入调试模式看看
我们可以看到, arr2 字符数组在打印的时候,打印了 a 、 b 、 c 、d后还打印了⼀些随机值,这就是因为 arr2 在末尾的地⽅没有 \0 字符作为结束标志,在打印的时候没有停⽌。而arr1打印就是正常的这是因为arr1的末尾有\0,所以arr1的打印就是正常的。
如果我们给arr2中加个\0结果会是什么呢?
int main()
{
char arr1[] = "abcd";
char arr2[] = { 'a','b','c','d','\0'};
printf("%s \n%s", arr1, arr2);
return 0;
}
这样arr1和arr2的结果就相同了。
9.转义字符
C语言中的转移字符有:
转义字符 | 意思 |
---|---|
? | 在书写连续多个问号时使用,防止他们被解析成三字母词 |
\` | 用于表示字符常量` |
\" | 用于表示一个字符产内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 换⻚符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1~3个八进制的数字。如:\130X |
\xdd | dd表示2个十六进制数字。如:\x30 0 |
下面是它们的使用方法
?:
在某些编译器下 ,会将 “ ??) ” 解析成 三字母词 “ ] ” 。
但是三字母词在现在的编译器已经无法实现了。
\`:
int main()
{
printf("%c", '\`');
return 0;
}
\":
int main()
{
printf("%c", '\"');
return 0;
}
\\:
int main()
{
printf("%c", '\\');
return 0;
}
\a:在打印 \a 时会触发电脑上的蜂鸣器.。
\ddd和\xdd:
int main()
{
printf("八进制结果 = %d 十六进制结果 = %d", '\120', '\x50');
return 0;
}
转义字符的进阶玩法
int main()
{
printf("c:\test\test.c");
printf("\n");
printf("c:\\test\\test.c");
return 0;
}
上面的结果会是什么呢?
结果为什么不一样呢?
这是上面的 \t 会被编译器解析为水平制表符,下面的\t的\会被编译器解析为\,这样它们的结果就不一样了。
我们也可以搭配strlen来玩。
10.语句和语句分类
C语⾔的代码是由⼀条⼀条的语句构成的,C语⾔中的语句可为以下五类:
- 空语句
- 表达式语句
- 函数调用语句
- 复合语句
- 控制语句
10.1空语句
空语句是五类语句中最简单的语句,一个分号就是一个空语句
int main()
{
;//空语句
return 0;
}
10.2表达式语句
表达式语句就是在表达式的后边加上分号
int main()
{
int a = 10;
int b = 20;
int c = a + b;//表达式语句
return 0;
}
10.3函数调用语句
函数调⽤的时候,也会加上分号,就是函数调⽤语句。
int Add(int a, int b)
{
return a + b;
}
int main()
{
int a = 10;
int b = 20;
int c = Add(a, b);
return 0;
}
10.4复合语句
复合语句其实就是代码块,成对括号中的代码就构成⼀个代码块,也被称为复合语句
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < sz; i++)
{
//for循环的循环体的⼤括号中的就是复合语句
printf("%d", arr[i]);
}
return 0;
}
10.5控制语句
控制语句⽤于控制程序的执⾏流程,以实现程序的各种结构⽅式(C语⾔⽀持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成。
C语言有九种语句:
主要分三类
- 条件判断语句也叫分⽀语句:if语句、switch语句;
- 循环执⾏语句:dowhile语句、while语句、for语句;
- 转向语句:break语句、goto语句、continue语句、return语句。
完