C语言基本概念
前言
笔者从今天开始正式学习C语言,学习过程中涉及到的源码笔者会放在github和gitee上,读者可根据需求自取:github.com/z-yi-han/C-…
gitee.com/zhang-yihan…
一.C语言常见概念
1.C语言是什么
C语言和我们日常的英文,中文一样,就是人类在计算机程序中用到语言,也就是一种计算机语言,当然,计算机语言有很多,C语言是其中的一个比较底层的语言。
2.编译器的选择
<1>编译和链接
首先,我们要先知道,C语言是一门编译型语言,也就是说C语言源代码都是文本文件,文本文件必须通过编译器编译和连接器链接来生成二进制的可执行文件,只有这样文件才能运行。
注:
- 每个源文件(.c)都单独经过编译器处理生成对应的目标文件(.obj为后缀)
- 多个⽬标⽂件和库⽂件经过链接器处理⽣成对应的可执⾏程序(.exe⽂件)
<2>编译器对比
笔者在这里不进行对比,直接给出答案,希望读者都能用VS2022这一款IDE,笔者自行搜索官网下载即可。
3.第一个C语言程序
笔者直接给读者展示一个最最基础的code:
#include<tsdio.h>
int main()
{
printf("hello C\n");
return 0;
}
当然,在VS2022上可以直接Ctrl+F5。
4.main函数
main函数又叫主函数,每个C语言程序不管有多少代码,都要从main函数开始执行,当然return 0就代表了程序结束,笔者将这些归纳成了几个点
- main函数是程序入口
- mani函数有且仅有一个
- 即使一个项目含有多个.c文件,但是仍然有且仅有一个main函数
第一次写代码的常见错误 - main函数写错
- main后面的()丢掉了
- 代码中不能使用中文符号和汉语拼音
- 一条语句结束必须有分号
5.printf和库函数
<1>printf
上述代码中使用了printf这个函数,他的功能是实现在屏幕上打印打印,下面笔者给出几行代码作为例子
int main()
{
printf("张三\n李四\n");
printf("hehe\n");
printf("%d\n", 100);
printf("%c\n", 100);
printf("%c\n", 'w');
printf("%lf\n", 3.5);
printf("%f\n", 3.5f);
return 0;
}
看不懂的部分笔者暂时不用管,观察这段代码在VS上运行结果:
<2>库函数
其实printf就是一种经典的库函数,库函数就是用来提升开发效率的C语言标准规定的一组函数,一个系列的库函数通常声明在同一个头文件中。由于库函数较多,因此我们可以参考下面的链接来查找资料cplusplus.com/reference/c…]
6.关键字
C语言中有一批自己独有的关键字
-
关键字都有其特殊意义
-
程序员自己创建标识符的时候不能和关键字重名
-
关键字不能自己创建
具体可以参考这个网址:C keywords - cppreference.com
7.字符和ASCII编码
由于计算机中所有数据都是由二进制存储的,但是键盘上有很多@,#等等符号,于是把这些编码规定一个特定的二进制序列表示,这就是编码。后来直接统一为了ASCII编码
具体的ASCII编码可以参考:ASCII Chart - cppreference.com
- 字符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个字符是不可打印字符,不能打印在屏幕上观察
{
//# $ % ^ a b c d
//'a';
//a - 1
//b - 2
//c -3
//...
//0 - 数字0
//'0' - 字符0 --ASCII 码值 48
printf("%c\n", 'A');//'A' - 65
printf("%c\n", 'A'+32);
printf("%d\n", '\n');
printf("%d\n", 'A');
printf("%c\n", 65);
return 0;
}
可以结合笔者给出的代码理解。
8.转义字符
C语言中有一些字符初次见可能不明所以,比如\n,\0,其实这些都是转义字符,下面笔者给出一些转义字符:
-
\ ? :在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词,在新的编译器上没法验证了。
-
\n:换行符
-
\t:制表符
-
\ddd:表示1-3个八进制数字
-
\xdd:dd表示2个十六进制的数字
-
\0:NULL字符,代表没有内容
转义字符参考:Escape sequences - cppreference.com