C语言系列02-C语言的优缺点、应用场景及语言标准

本文探讨了C语言作为计算机专业基础的重要性,介绍了C语言的相似语法结构,库函数的使用,以及C语言的优缺点,包括底层编程的高效性和安全性挑战。此外,文章还涵盖了C语言在系统级软件、游戏开发、嵌入式和网络编程等领域的应用,以及C语言的发展历程和规范变迁。
摘要由CSDN通过智能技术生成

学好C语言,学习其他开发语言就比较容易

C语言作为计算机专业的第一门课,最主要的是通过C语言来入门,打基础,是非常值得好好去学习的一门课,基础打好了以后学习其他技术也更容易。

高级语言的语法基本相似

一门开发语言当中,基本的数据类型(int float, string,char,boolean,array),变量的声明,加减乘除算术运算,与或非等逻辑运算、大于等于小于等关系运算,赋值语句,分支选择语句(if/else),循环语句(for, while),函数的声明及调用,文件操作等基本都是类似的。

比如C语言的if/else, for循环,while循环等在其他常见的开发语言比如java, c++, js, php等开发语言当中也同样有;C语言的数组下标是从0开始的,java,c++,js等开发语言数组的下标也是从0开始的。这些语法基本都是类似的。

库函数/STL/JDK

C语言标准中有语言标准的库函数供开发者调用,C++标准中也有STL库,Java官方也为开发这提供了JDK工开发者调用等等,这些理念都是类似的。

机器语言生汇编,汇编语言生C,C生万物。

掌握了计算机的工作原理和C语言,就打好了一个坚实的基础,以后学习其他的开发语言和技术就比较快。

C语言的优缺点

在我们系统学习C语言的具体的语法之前,我们首先从整体看看C语言有什么优缺点,然后再学习具体的语法,更容易学习。

C语言的优点有:

底层编程:C语言允许直接访问计算机硬件,提供了底层编程的能力。程序员可以直接控制内存、指针和位操作等,这在开发操作系统、驱动程序和嵌入式系统等领域非常有用

程序执行效率高:C语言生成的机器代码执行效率较高,能够产生紧凑且高效的代码。它不依赖于虚拟机或解释器,直接编译为机器码执行

可移植性好:C语言的可移植性通常较好。标准的C语言库在各种平台上都有广泛的支持,可以编写一次代码,然后在不同的操作系统和硬件平台上进行编译和运行。尽管仍然需要针对不同平台进行一些调整,但相比其他低级语言而言,C语言更容易实现跨平台开发

C语言的缺点

事物通常都具有两面性,有的时候它的优点同样也是它的缺点,想要使用C语言的自由编程的乐趣,就必须承担更多的责任。

C语言使用指针,而涉及指针的编程错误往往难以察觉。使用指针时,有可能出现空指针解引用、内存泄漏、野指针等问题。这些指针错误可能导致程序崩溃或产生未定义的行为

C语言为了保证简洁和高效的执行缺少必要的安全检查,比如数组越界检查,缓冲区溢出检查,输入验证等。容易引发程序运行异常和安全问题。所以后来的编程语言比如Java,C#等都对数组越界等做了检查。

// demo1 缺少数组越界检查,当数组越界后,程序出现预料之外的不确定行为
int a [] = {1,2,3};
printf("%d", a[3]);
// demo2 缺少缓冲区溢出校验
// 字符数组S预留了10各字节的空间,当输入的字符超过10个的时候,程序
// 不会报错,而是把超过部分的字符继续顺着内存地址写入,导致,后边的数据异常被擦除
char s [10];
gets(s);
printf("%s",s);

因此,C语言对程序员的要求相对C++,java等更高。

C语言的应用场景

系统级软件的开发

C语言被广泛用于编写操作系统、编译器、驱动程序和嵌入式系统等系统级软件。它提供了对硬件和底层系统资源的直接访问能力,使得开发人员可以更好地控制系统的行为和性能。比如Window,Linux, 数据库软件MySQL,网络协议栈的实现软件等。系统级软件的开发门槛比较高,需要对硬件,操作系统等知识有比较深入的了解,不太适合应届生就业工作

游戏开发

C语言可以用于游戏引擎的开发,图像处理,音视频处理等领域。在一些中大型游戏中,游戏环境渲染,图像处理等都使用C语言处理。OpenGL(Open Graphics Library)就是用C编写的。常用的游戏引擎,诸如 Unity3D、Unreal Engine、Cocos2dx 等都是使用 C 语言编写的。是个不错的就业方向

嵌入式开发

智能手表,电视,冰箱,扫地机器人等使用微处理器的设备上的软件开发,由于资源有限需要优化内存和性能,因此,C语言在该领域的应用开发比较流行。嵌入式的操作系统FreeRtos,UCOS等都主要由C语言开发。是不错的就业方向

网络编程

C语言提供了丰富的网络编程库,如Socket库,使得开发网络应用程序变得更加容易。许多网络服务器、客户端和协议的实现都是使用C语言完成的。

C语言的规范

一门语言的语法是一套规则,用于管理语言中各有效语句组合在一起的方式。C语言发展之初,并没有所谓的C标准。随着微型计算机的普及,C语言衍生出了诸多版本,这些版本之间存在差异,为了使C语言得到统一,美国国家标准学会(ANSI)制定了一套标准,称为ANSI C。ANSI C标准自1989年诞生以来,又历经了数次修改。

C89/C90

美国国家标准协会(ANSI)于1983年组建了一个委员会(X3J11),开发了一套新标准,并于1989年正式公布。该标准(ANSI C)定义了C语言和C标准库。国际标准化组织于1990年采用了这套C标准(ISO C)。ISO C和ANSI C是完全相同的标准。ANSI/ISO标准的最终版本通常叫作C89,其主要内容如下:

  • 定义了 C 语法标准及标准库;
  • 新的预处理命令和特性;
  • 函数原型(prototype);
  • 新关键字:const、volatile、signed;
  • 宽字符、宽字符串和多字节字符;

C99标准

1994年,ANSI/ISO联合委员会(C9X委员会)开始修订C标准,最终发布了C99标准该委员会遵循了最初C90标准的原则,包括保持语言的精练简单。委员会的用意不是在C语言中添加新特性,而是为了达到新的目标。

第1个目标是,支持国际化编程。例如,提供多种方法处理国际字符集。

第2个目标是,“调整现有实践致力于解决明显的缺陷”。因此,在遇到需要将C移至64位处理器时,委员会根据现实生活中处理问题的经验来添加标准。

第3个目标是,为适应科学和工程项目中的关键数值计算,提高C的适应性,让C比FORTRAN更有竞争力。

为了实现上述的目标,C99标准纳入了如下的主要内容:

  • 复数(complex);
  • 整数(integer)类型扩展;
  • 变长数组;
  • Boolean 类型;
  • 非英语字符集的更好支持;
  • 浮点类型的更好支持;
  • 提供全部类型的数学函数;
  • C++ 风格注释(//)

C11标准

2011年终于发布了C11标准。此次,委员会提出了一些新的指导原则。出于对当前编程安全的担忧,不那么强调“信任程序员”目标了。修订标准的原因不是因为原标准不能用,而是需要跟进新的技术。例如,新标准添加了可选项支持当前使用多处理器的计算机

C11 标准新引入的特征尽管没 C99 相对 C90 引入的那么多,但是这些也都十分有用,比如:字节对齐说明符、泛型机制(generic selection)、对多线程的支持、静态断言、原子操作以及对 Unicode 的支持。

  • 31
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值