在这里插入图片描述

🙈C语言常见概念


一、什么是C语言?

人人之间交流使用的是自然语言,如汉语、英语等

那么人和计算机之间是怎样交流的呢?----计算机语言

目前已知有上千种计算机语言,C语言就是众多计算机语言中的一种
C语言,全称为"C Programming Language"(C程序设计语言),是一种广泛使用的计算机编程语言。它是由Dennis Ritchie于1972年在贝尔实验室设计的,继承了B语言的许多思想,并加入了数据类型的概念及其他特性。C语言以其高效率和跨平台的特性而闻名,能够在多种计算机平台上进行编译,包括嵌入式处理器和超级计算机等。C语言的设计目的是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

☀️C语言是一门编译型计算机语言

  • 编译型语言是指在程序执行之前需要经过编译过程,将源代码转换为机器语言文件(如exe文件),然后由机器直接运行这些机器码
  • C语言的源代码都是文本文件,文本文件本身无法执行,必须通过编译器翻译和链接器的连接,生成二进制的可执行文件,可执行文件才能执行

二、main函数、库函数

main函数

每个C语言程序不管有多少行代码,都是从main函数开始执行的,main函数是程序的入口,main函数也被叫做:主函数。main前面的int表示main函数执行结束的时候返回一个整型类型的值。所以main函数的最后写return 0正好前后呼应。

  • main函数是程序的入口
  • main函数有且仅有一个
  • 即使项目中有多个.c文件也只能有一个main函数(程序的入口只能有一个)

库函数

为了不在重复实现常见的代码,让程序员提升开发效率,C语言标准规定了一组函数,这些函数再由不同的编译器厂商根据标准进行实现,提供给程序员使用。这些函数组成了一个函数库,被称为标准库,这些函数也被称为库函数。

一个系列的库函数一般会声明在一个头文件中,所以库函数的使用,要包含对应的头文件

🔗参考链接:库函数


三、关键字

C语言中由一批保留名字的符号,这些符号被称为关键字

❄️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
    C99标准中加入了:inline restrict _bool _Complex Imaginary 等关键字。

🍁注意:

  • 关键字都有特殊的有意义,是保留给C语言使用的
  • 创建标识符的时候不可与关键词重复
  • 关键词是不可自己创建的

🔗参考链接:C语言关键字全部介绍


四、字符、ASCII编码

在键盘中可以敲出各种字符,如 a、@、%、) 等这些符号被称为字符,在C语言中字符是用单引号括起来的,例如:‘q’ 、‘w’、‘!’ 等。

在计算机中所有的数据都是以二进制的形式存储的,给每个字符编一个二进制序列,叫做编码,美国国家标准学会(ANSI)出台了一个标准ASCII编码

C语言中字符遵循ASCII编码的方式
在这里插入图片描述
🔗参考链接:ASCII码表

🌈记忆技巧:

  • 字符 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个字符是不可打印字符,无法打印在屏幕上观察

五、字符串

C语言中使用双引号括起来的一串字符被称为字符串,例如“qwert”,就是一个字符串。

在C语言字符串中,字符串的末尾隐藏放着一个\0字符,这个 \0 字符是字符串的结束标志

对于字符串“qwert”,我们实际看到了5个字符:q,w,e,r,t 但是实际上在末尾隐藏了一个\0转义字符,当我们用库函数printf()打印字符串或者strlen()计算字符串长度的时候,遇到 \0 的时候就停止了。

论证:

方法一:使用printf()

#include<stdio.h>
int main()
{
	char ch1[] = "qwe";
	char ch2[] = { 'q','w','e' };
	printf("%s\n", ch1);
	printf("%s\n", ch2);

	return 0;
}

结果:
在这里插入图片描述
当打印ch2时在q w e 之后还打印了一些随机值,原因就是在 ch2 之后没有 \0 字符作为结束标志,在打印的时候没有停止。

但是ch1的打印完全正常,因为 ch1 数组是使用字符串常量初始化的,数组中有 \0 作为技术标志,打印可以正常停止。

加入\0再次打印:

#include<stdio.h>
int main()
{
	char ch1[] = "qwe";
	char ch2[] = { 'q','w','e' ,'\0'};
	printf("%s\n", ch1);
	printf("%s\n", ch2);
	printf("qwe\0rty");

	return 0;
}

结果:
在这里插入图片描述
结果发现,打印只要遇到\0的时候就会停止。

方法二:使用strlen()

#include<stdio.h>
#include<string.h>
int main()
{
	char ch1[] = "qwe";
	char ch2[] = { 'q','w','e' };
	printf("%d\n", strlen(ch1));
	printf("%d\n", strlen(ch2));
	printf("%s\n", ch1);
	printf("%s\n", ch2);

	return 0;
}

结果:
在这里插入图片描述

🍄strlen()

  • (string length)用于计算字符串长度的函数,调用函数需要头文件<string.h>
  • 它从字符串的开头位置开始计数,直到遇到终止字符\0,并返回计数器的值。需要注意的是,最终统计的字符串长度不包括终止字符 \0
  • 但是实际数组ch1[]中的元素个数是4

通过此方法也可验证,字符串的末尾隐藏放着一个\0字符,这个 \0 字符是字符串的结束标志。


六、转义字符

在前文中提到的\0 \n是什么呢?

在字符中有一组特殊的字符是转义字符,通俗的说就是,转变原来意思的字符。

举例:\n
\n 是个转义字符,表示换行,可以理解为\将普通字符n的意思转变为换行。

💮C语言中转义字符:
\? :在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词,在新的编译器上没法验证了。
\' :⽤于表⽰字符常量 ’ 。
\" :⽤于表⽰⼀个字符串内部的双引号
\\:⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。
\a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。
\b :退格键,光标回退⼀个字符,但不删除字符。
\f :换⻚符,光标移到下⼀⻚。在现代系统上,这已经反映不出来了,⾏为改成类似于 \v 。
\n :换⾏符。
\r :回⻋符,光标移到同⼀⾏的开头。
\t :制表符,光标移到下⼀个⽔平制表位,通常是下⼀个4/8的倍数。
\v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀⾏的同⼀列。
  下⾯2种转义字符可以理解为:字符的8进制或者16进制表⽰形式(依据ASCII码表)
\ddd :ddd表⽰1~3个⼋进制的数字。如:\130表⽰字符X。
\xdd :dd表⽰2个⼗六进制数字。如: \x30表⽰字符0。
\0 :null字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,⽤于字符串的结束标志,其
ASCII码值是0。

🔗参考链接:转义字符


在这里插入图片描述

💜愿付出都有回报,以此监督自己,坚持学习!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐