人和人交流使用自然语言,比如汉语,英语,日语。而人和计算机交流则使用的是计算机语言。目前已知有上千种计算机语言,人们用过使用这些计算机语言与计算机交流,给计算机下达指令,让计算机按照我们的想法去工作。
C语言就是其中的一种,有着辉煌的历史和特殊的意义。
C语言最初是作为Unix系统的开发工具而发明的,它的历史可以追溯到20世纪70年代初,由美国贝尔实验室的电脑科学家肯尼斯·蓝·汤普森(Kenneth Lane Thompson)发明。C语言最初是为了编写UNIX操作系统而设计的,它具有简洁而强大的特性,提供了底层的硬件访问能力,同时具备高级编程语言的抽象特性。
C语言的成功源于其简洁而高效的特性,使得程序员可以用较少的代码完成更多的功能。这种高效性尤其在嵌入式系统和性能敏感的应用中表现出色。C语言还具有跨平台性,其代码可以在多个操作系统和硬件平台上运行,具有很强的可移植性,这使得程序员能够开发一次代码,在不同的环境中重复使用,减少了开发和维护成本。
C语言提供了直接访问内存和硬件的能力,使程序员可以对计算机系统进行底层控制和优化。这对于开发操作系统、驱动程序和嵌入式系统等领域至关重要。此外,C语言还拥有广泛的标准库和第三方库,覆盖了各种功能和领域,为程序员提供了丰富的工具和资源。
C语言的学习曲线适中,其语法简单明了,基本概念易于理解,初学者可以快速上手,并逐步深入学习更高级的概念和技术。这使得C语言成为许多大学和编程初学者的首选语言之一。
C语言在计算机科学领域发挥了巨大的作用,它为程序员提供了一种强大而灵活的工具,用于开发各种软件应用程序和系统软件。C语言在操作系统、编译器、网络通信、数据库、图形渲染等领域都有广泛的应用。例如,UNIX、Linux、macOS等操作系统都是用C语言编写的。许多知名的软件和库也是用C语言开发的,如GCC编译器、SQLite数据库等。
总之,C语言的历史是一部辉煌的历程,它为计算机科学的发展做出了重要的贡献。C语言的简洁高效、跨平台性、底层控制能力、丰富的库支持和适中的学习曲线等特点使得它成为一种强大而灵活的编程语言,在各个领域都有广泛的应用。
#include
int main() {
printf("Hello,world!");
return 0;
}
#include
是C语言的预处理指令,它的作用是告诉编译器在编译之前包含标准输入输出头文件(Standard Input/Output Header File)
int main()表示返回一个整型变量的主函数
{}为代码段
priintf()为标准输出函数
Hello,World为要打印在屏幕的话,这就话用“”引以来是因为它是一个字符串
return 0;表示返回一个整型变量0
每个语言程序不管多复杂,都是从main函数开始执行,main函数是程序的入口,也称买main函数为主函数,
1.main函数是程序的入口
2.main函数有且只有一个
3.即使一个项目有多个.c文件,但是只能有一个main函数(因为程序的入口有且只有一个)
printf函数
printf("hello C\n'');
这段代码使用了printf函数用来将想要输出的话hello C在屏幕上进行显示。
printf函数也可以用来打印其他类型的数据,比如:
int a=10;
printf("%d",a);
printf("%c",'s');
printf("%lf",3.14);
库函数
在C语言中,库函数是预先编写好的函数,可以在程序中直接调用,而不需要自己编写。库函数通常被组织在标准库或第三方库中。
C语言标准库提供了许多常用的函数,例如数学函数、输入输出函数、字符串处理函数等。这些库函数可以在编译时链接到程序中,以便在程序运行时使用。
下面是一些常见的C语言库函数及其用途:
printf():用于输出格式化的字符串到标准输出设备(通常是屏幕)。
scanf():用于从标准输入设备(通常是键盘)读取格式化的输入。
strlen():用于获取字符串的长度(不包括终止字符’\0’)。
strcpy():用于将一个字符串复制到另一个字符串中。
strcat():用于将一个字符串追加到另一个字符串的末尾。
strcmp():用于比较两个字符串是否相等。
sin()、cos()、tan():用于计算三角函数的值。
sqrt():用于计算平方根。
pow():用于计算幂运算。
fopen()、fclose():用于打开和关闭文件。
除了标准库之外,还有很多第三方库可供使用,例如用于图形处理的OpenGL库、用于网络通信的socket库等。这些库提供了更专业的功能,可以满足特定领域的需求。
在C语言中有一些保留名字的符号,比如:int,float,if,return……,这些符号被称为保留字或者关键字
字符
我们在键盘上可以敲出各种字符,如:a,u,%,*,@,这些符号都被称为字符,再C语言中字符一般用单引号(如’s’,’@’)括起来表示。
ASCII编码
ASCII码是一种字符编码标准,用于将字符集转换为计算机可以处理的数字形式。它使用指定的7位或8位二进制数组合来表示128或256种字符。ASCII码被广泛应用于计算机、网络和各种电子设备中,是世界上最通用的编码标准之一。
我们没有必要记住所有的ASCII编码表中的数字,使用时查看就行,但是我们也因该记住几组特殊的数据:
可打印字符展示
#include
int main() {
int i = 0;
for (i = 32; i <= 127; i++) {
printf("%c ", i);
if (i % 10 == 0)//一行输出10个字符
printf("\n");
}
return 0;
}
字符串
C语言中使用双引号括起来的一串字符被称为字符串,如:“adasd”,就是一个字符串
字符串打印格式可以使用%s来指定,也可以直接打印
#include
int main() {
printf("%s\n", "hello,C");
printf("hello,C");
return 0;
}
\0
在C语言中字符串末尾隐藏放着一个\0字符
这个字符是字符串的结束标志。
C语言可以将字符串放在数组中,我们用以下代码来验证一下\0的作用
#include
int main() {
char arr1[] = { 'a','b','c','d'};
char arr2[] = "abcd";
printf("%s\n", arr1);
printf("%s\n", arr2);
return 0;
}
我们可以看到字符数组arr1在打印abcd的时候还打印了其他的字符,而在打印arr2数组的时候就直接只打印了abcd,这是因为arr1没有\0作为结束标志,而arr2数组是使用字符串常量初始化的,该数组有\0作为结束标志。
将arr1数组加上\0
#include
int main() {
char arr1[] = { 'a','b','c','d','\0'};
char arr2[] = "abcd";
printf("%s\n", arr1);
printf("%s\n", arr2);
return 0;
}
可以看到两个数组都正常打印
那为什么arr1数组最终会停止呢,那是因为字符数组没有找到\0就会一直在内存中读取下去,在其他位置发现了\0就会停止。其实已经产生了越界访问。
在C语言中有些字符原本是一种意思,而在前面加上"\",就会变为另一种意思,这种特殊字符被称为转义字符。
可以看到在n前加一个"\"产生了不同的效果,\n是换行符,是转义字符的一种。
C语言的代码是由一条条语句构成的,C语言的语句可以分为以下5大类:
空语句
空语句是最简单的,一个分号就是一条语句。
#include
int main()
{
;
return 0;
}
空语句一般出现的地方是:这里需要一条语句,但是这个语句不需要做任何工作。
表达式语句
表达式语句就是在表达式后面加上分号
#include
int main()
{
int a = 10;
double c = 3.3;
double d = a + c;
return 0;
}
函数调用语句
函数调用的时候也会加上分号,就是函数调用语句
int add(int x, int y) {
return x + y;
}
int main() {
int a = add(22, 33);
printf("%d", a);
return 0;
}
复合语句
复合语句就是代码块,成对括号中的代码就是一个代码块,也被称为复合语句
int main() {
int i = 0;
int arr[10] = { 0 };
for (i = 0; i <= 10; i++) {
arr[i] = 10 - i;
printf("%d\n", arr[i]);
}
return 0;
}
控制语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构,选择结构,循环结构)它们有特定的语句定义符,C语言有九种控制语句:
在C语言中,注释是用于解释代码的文本,不会被编译器执行。注释可以帮助程序员理解代码的意图和功能,提高代码的可读性。
C语言中的注释有两种形式:单行注释和多行注释。
单行注释:使用双斜杠(//)开头,用于注释一行代码。例如:
// 这是一个单行注释
int x = 5; // 变量x被赋值为5
多行注释:使用/* 和 */ 包围,可以注释多行代码。例如:
/* 这是一个
多行注释 */
int x = 5; /* 变量x被赋值为5 */
需要注意的是,注释不应与代码混在一起,以避免引起混淆。此外,注释应简洁明了,提供有用的信息,而不是冗余的解释。