微网站 文章,最好的php网站开发工具,插件 wordpress开发,免费的企业邮箱怎么申请引言 C语言是一门面向过程的、抽象化的通用程序设计语言#xff0c;广泛应用于底层开发。它在编程语言中具有举足轻重的地位。 此文为【C语言必知必会】系列第一篇#xff0c;带你初步了解C语言#xff0c;为之后的学习打下基础 文章目录 1️⃣发展历史2️⃣语言特点3️⃣语…引言 C语言是一门面向过程的、抽象化的通用程序设计语言广泛应用于底层开发。它在编程语言中具有举足轻重的地位。 此文为【C语言必知必会】系列第一篇带你初步了解C语言为之后的学习打下基础 文章目录 1️⃣发展历史2️⃣语言特点3️⃣语言组成4️⃣总结 1️⃣发展历史
C语言起源于美国贝尔实验室的贝尔实验室由丹尼斯·里奇和肯尼斯·汤普森于20世纪70年代初期开发而成。起初他们使用B语言对UNIX操作系统进行了改进并逐步将其重写成了C语言。
随着UNIX的发展C语言也得到了不断的完善和推广。为了确立C语言的标准许多专家、学者和硬件厂商参与组建了C语言标准委员会。1989年他们发布了第一个完整的C语言标准即ANSI CC89。 随后C语言标准经历了多次修订和更新。1999年发布了C99标准其中包含了一些新的特性和语法改进。2011年发布了C11标准进一步扩展了C语言的功能和表达能力。
C语言以其简洁、高效、可移植性和广泛应用性而闻名。它成为了许多编程领域的首选语言包括系统级编程、嵌入式系统开发、操作系统设计等。 许多重要的软件和工具如UNIX、Linux和MySQL等都是使用C语言开发的。
截至目前在计算机科学和软件工程领域C语言仍然是一门重要且广泛应用的编程语言对后续语言的发展也产生了深远的影响。 2️⃣语言特点
C语言是一种结构化语言它有着清晰的层次可按照模块的方式对程序进行编写十分有利于程序的调试且c语言的处理和表现能力都非常的强大依靠非常全面的运算符和多样的数据类型可以轻易完成各种数据结构的构建通过指针类型更可对内存直接寻址以及对硬件进行直接操作因此既能够用于开发系统程序也可用于开发应用软件。
C语言具有以下几个主要的语言特点
1.C语言的语法相对简单并且提供了一些核心的编程结构使得程序员可以用更少的代码实现功能。C语言的底层控制和内存管理能力使其在编写高效的程序时具有优势。
2.C语言是一种面向过程的编程语言它侧重于按照顺序执行一系列操作步骤通过函数调用和模块化的方式组织代码。这种特点使得C语言非常适合系统级编程和底层开发。 3.可移植性强C语言的标准化以及对底层硬件的直接访问使得它在不同平台和操作系统上具有很高的可移植性。C语言编写的程序通常可以在多个系统上进行编译和运行。
4.C语言提供了指针的概念允许直接访问和操作内存地址。 这为程序员提供了更高的灵活性和对底层资源的直接控制能力。 5.C语言提供了广泛的标准库包含了大量的函数和工具可以方便地进行文件操作、字符串处理、内存分配等常见任务。
总而言之C语言以其简洁、高效、可移植和底层控制能力而闻名成为广泛应用于系统级编程、嵌入式开发和底层软件开发的重要语言。 3️⃣语言组成
数据类型
C语言中的数据类型用来定义变量的性质和存储空间的大小。常见的数据类型包括整型int、浮点型float、double、字符型char以及派生的复杂数据类型如结构体struct和枚举enum等。
常量与变量
在C语言中常量是指在程序执行期间值不会改变的数据。常量可以是字面值如整数、浮点数、字符等或使用const关键字进行声明。变量是用于存储和表示可变数据的标识符。 在使用变量之前需要先声明并指定其数据类型。
注意 变量名是由字母、数字和下划线组成的标识符且不能以数字开头。变量名区分大小写例如myVariable和myvariable是不同的变量名。
数组
数组是相同数据类型的元素按一定次序排列而成的集合。在C语言中数组使用方括号[]来声明并通过下标访问其中的元素。数组的大小在声明时确定并且下标从0开始。 指针
指针是用来存储变量地址的变量。通过指针我们可以直接访问和操作内存中的数据。在C语言中可以使用星号*来声明指针变量并通过取地址运算符获取变量的地址或者通过解引用运算符*访问指针指向的值。
字符串
字符串是由字符组成的数组以空字符\0作为结束标志。在C语言中可以使用字符数组或者指针来表示字符串并通过一系列的字符串操作函数如strcpy、strlen等进行处理。
运算符
C语言提供了各种各样的运算符用于完成不同类型的运算任务。常见的运算符包括算术运算符、-、*、/等、关系运算符、、等、逻辑运算符、||、!等等。
算术运算符逻辑运算符赋值运算符
例如表达式a b * c中乘法运算符的优先级高于加法运算符所以先计算b * c然后再与a相加。如果要先计算a b可以使用括号来改变优先级如(a b) * c。
示例如下
#include stdio.hint main() {int a 10, b 5, c 2;int result;result a b * c; // 优先级乘法 加法printf(a b * c %d\n, result);result (a b) * c; // 优先级括号 加法 乘法printf((a b) * c %d\n, result);result a / b c; // 优先级除法 加法printf(a / b c %d\n, result);result a / (b c); // 优先级括号 加法 除法printf(a / (b c) %d\n, result);result a % b c * 2; // 优先级乘法 取模 加法printf(a %% b c * 2 %d\n, result);result (a % b) (c * 2); // 优先级括号 取模 乘法 加法printf((a %% b) (c * 2) %d\n, result);return 0;
}结果如下 了解运算符的优先级可以帮助我们编写正确和清晰的表达式并避免出现不必要的错误。
关键字
关键字又称为保留字就是已被C语言本身使用不能作其它用途使用的字。 例如关键字不能用作变量名、函数名等标识符。
数据类型关键字 short修饰int短整型数据可省略被修饰的int。KR时期引入 long修饰int长整型数据可省略被修饰的int。KR时期引入 long long修饰int超长整型数据可省略被修饰的int。C99标准新增 signed修饰整型数据有符号数据类型。C89标准新增 unsigned修饰整型数据无符号数据类型。KR时期引入 restrict用于限定和约束指针并表明指针是访问一个数据对象的初始且唯一的方式。C99标准新增 复杂类型关键字 struct结构体声明。KR时期引入 union联合体声明。KR时期引入 enum枚举声明。C89标准新增 typedef声明类型别名。KR时期引入 sizeof得到特定类型或特定类型变量的大小。KR时期引入 inline:内联函数用于取代宏定义会在任何调用它的地方展开。C99标准新增
存储级别关键字 auto指定为自动变量由编译器自动分配及释放。通常在栈上分配。与static相反。当变量未指定时默认为auto。KR时期引入 static指定为静态变量分配在静态变量区修饰函数时指定函数作用域为文件内部。KR时期引入 register指定为寄存器变量建议编译器将变量存储到寄存器中使用也可以修饰函数形参建议编译器通过寄存器而不是堆栈传递参数。KR时期引入
#include stdio.hint main() {register int i; // 声明一个寄存器变量for (i 0; i 10; i) {printf(%d , i);}return 0;
}在上面的代码中我们使用register关键字声明了一个整型变量i然后在for循环中使用它进行迭代。 extern指定对应变量为外部变量即标示变量或者函数的定义在别的文件中提示编译器遇到此变量和函数时在其他模块中寻找其定义。KR时期引入 const指定变量不可被当前线程改变但有可能被系统或其他线程改变。C89标准新增 volatile指定变量的值有可能会被系统或其他线程改变强制编译器每次从内存中取得该变量的值阻止编译器把该变量优化成寄存器变量。C89标准新增
这些概念是C语言中非常重要的基础知识对于理解和编写C程序至关重要。 4️⃣总结
此文为 【C语言必知必会】系列之第一篇 带领读者初步了解C语言为之后的学习打下坚实的理论基础。
后续将发布 【C语言必知必会】系列之第二篇编译器的安装与使用读者可订阅专栏持续跟进专栏更新。