一、计算机语言发展
计算机语言从最初的机器语言发展到现在主要分为三个阶段:机器语言、汇编语言、高级语言。
1. 机器语言
机器语言是计算机可以直接执行的二进制指令。在计算机发展的早期阶段,程序员需要使用机器语言编写代码,每个指令都需要以二进制形式表示。机器语言非常底层,对于人类来说很难理解和编写。
2. 汇编语言
为了简化程序员的编程工作,汇编语言应运而生。汇编语言使用助记符和符号来代替机器语言中的二进制指令,使得编程更加容易理解和编写。程序员编写的汇编语言代码会通过汇编器转换成机器语言代码,然后可以在计算机上运行。
3. 高级语言
高级语言是相对于机器语言和汇编语言而言的更加抽象的编程语言。高级语言使用更接近自然语言的语法和结构,使得编程更加简洁和易读。高级语言的源代码通常需要通过编译器或解释器转换成机器语言代码,然后才能在计算机上运行。常见的高级语言包括GO、Ruby、C、C++、Swift、PHP、JavaScript、Java、Python等。
随着计算机技术的不断发展,高级语言的使用越来越广泛。高级语言提供了丰富的库和工具,可以更加高效地开发各种应用程序。同时,高级语言的抽象层级也使得程序员能够更加专注于解决问题,而无需深入了解底层的机器细节。
二、C语言的应用
C语言具有广泛的应用场景,以下是一些主要的应用场景:
-
系统开发:C语言被广泛用于操作系统的开发,如Unix、Linux等操作系统的内核就是使用C语言编写的。
-
嵌入式系统:C语言具有底层控制能力和高效性能,适合用来编写嵌入式系统的驱动程序和控制程序。
-
游戏开发:C语言在游戏开发中应用广泛,能够直接访问硬件并提供高性能的运算能力。
-
编译器开发:C语言也常被用来编写编译器和解释器,用于将其他高级语言转换为机器码或者解释执行。
-
数据库开发:C语言是一些数据库管理系统的核心语言,如MySQL数据库就是用C语言编写的。
-
网络编程:C语言提供了丰富的网络编程库,能够方便地开发网络应用程序,如Web服务器等。
-
科学计算:C语言具有高效的数值计算能力,被广泛应用于科学计算、数据分析和数值模拟等领域。
-
前端开发:虽然前端开发主要使用的是HTML、CSS和JavaScript等语言,但C语言也在一些底层的Web开发中应用,比如开发浏览器引擎。
总之,C语言是一种通用的编程语言,适用于各种不同的领域和应用场景,特别擅长于需要高效性能和底层控制的任务。
三、C语言入门基础
3.1 概念
源文件:C语言源文件是包含了程序代码的文本文件,以.c为文件扩展名。源文件中包含了程序的函数定义、变量声明和定义、控制语句等。
头文件: 头文件是C语言源文件中用于包含函数原型、宏定义、结构体和枚举类型等的文件,以.h为文件扩展名。头文件通常包含了函数声明、结构体定义、宏定义等内容,可以被多个源文件引用,提供了在不同源文件之间共享代码的机制。
关键字:关键字是C语言中具有特殊含义的单词,用于表示语言的基本构造和控制结构,如if、for、while等。关键字不能作为变量名、函数名或标识符的其他部分。
注释:注释是用来增加代码可读性和解释代码的文字,不会被编译器解析为可执行代码(给程序员看的)。C语言中有两种注释方式:单行注释(以//开头)和多行注释(以/*开头,以*/结尾)。
符号:符号是C语言中用于表示特定含义的字符,如运算符(+、-、*、/等)、分隔符(逗号、分号等)、括号(圆括号、花括号等)等。
变量:变量是用来存储数据的一种命名内存位置(会变化的量)。在C语言中,变量必须先声明后使用,声明包括变量的类型和名称,变量名由字母、数字和下划线组成,且不能以数字开头。
函数:函数是一个独立的代码块,用于完成特定的任务。函数可以接受参数,执行一系列语句并返回一个值。在C语言中,函数由函数头、函数体和返回值组成,可以在源文件中定义和调用。C语言中比较特殊的就是main函数,整个C语言程序是从main函数开始执行的,其他的函数均是直接或间接被main调用。
总之,C语言源文件包含了程序的代码和逻辑,头文件用于共享代码和定义声明,关键字是具有特殊含义的保留字,注释用于解释代码,符号表示特定含义,变量用于存储数据,函数是独立的代码块用于完成特定任务。
3.2 C语言写代码步骤
1.编辑源代码
使用vi 或者其他编辑器
用linux 可以用vi命令直接创建编辑代码
vi hello.c
#include <stdio.h>
int main()
{
printf("Hello, World!\n");
return 0;
}
2.编译
编译就是用编译器把源程序转化成可执行程序的过程,编译要用到编译器。在linux中使用的编辑器一般是gcc。
例:gcc hello.c 把当前目录下hello.c文件编译,得到的可执行文件名字叫 a.out 也可以自己制定生成的可执行程序的名字,使用gcc hello.c -o hello
3.执行编译生成的可执行程序
执行方式是 ./hello
4.调试
当执行后发现结果不对或者直接报错,这时候就需要返回源代码重新修改执行。
3.3 C语言关键字
在C语言中,为了定义变量、表达语句功能和对一些文件进行预处理,还必须用到一些具有特殊意义的字符,这就是关键字,我们用户自己定义的变量函数名等要注意不可以与关键字同名。
1.数据类型关键字
a. 基本数据类型(5个)
void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果。
char:字符型类型数据,属于整型数据的一种。
int:整型数据,通常为编译器指定的机器字长。
float:单精度浮点型数据,属于浮点数据的一种。
double:双精度浮点型数据,属于浮点数据的一种。
b. 类型修饰关键字(4个)
short:修饰int,短整型数据,可省略被修饰的int。
long:修饰int,长整形数据,可省略被修饰的int。
signed:修饰整型数据,有符号数据类型。
unsigned:修饰整型数据,无符号数据类型。
c. 复杂类型关键字(5个)
struct:结构体声明。
union:共用体声明。
enum:枚举声明。
typedef:声明类型别名。
sizeof:得到特定类型或特定类型变量的大小。
d. 存储级别关键字(6个)
auto:指定为自动变量,由编译器自动分配及释放,通常在栈上分配。
static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部。
register:指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数。
extern:指定对应变量为外部变量,即在另外的目标文件中定义,可以认为是约定由另外文件声明的对象的一个“引用“
const:与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)。
volatile:与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值。
2.流程控制关键字
a. 跳转结构(4个)
return:用在函数体中,返回特定值(或者是void值,即不返回值)。
continue:结束当前循环,开始下一轮循环。
break:跳出当前循环或switch结构。
goto:无条件跳转语句。
b. 分支结构(5个)
if:条件语句。
else:条件语句否定分支(与if连用)。
switch:开关语句(多重分支语句)。
case:开关语句中的分支标记。
default:开关语句中的“其他”分治,可选。
c. 循环结构(3个)
for:for循环结构,for(1;2;3)4;的执行顺序为1->2->4->3->2...循环,其中2为循环条件。
do:do循环结构,do 1 while(2);的执行顺序是1->2->1...循环,2为循环条件。
while:while循环结构,while(1) 2;的执行顺序是1->2->1...循环,1为循环条件。
以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。
可参考 C语言32个关键字汇总详解