C01-C语言概述

news/2024/10/4 2:21:09

如果有人说:“我想要一种语言,只需要对它说我要干什么就行”,给他一支棒棒糖就好了。

1. C语言简述

1.1 起源

C语言是贝尔实验室的Ken Thompson、Dennis Ritchie等人开发的UNIX操作系统的“副产品”,初始目的是用于 UNIX 的开发。

UNIX系统最初也是用汇编语言编写的。但用汇编语言编写的程序往往难以调试和改进。Thompson意识到需要用一种更加高级的编程语言来完成UNIX系统未来的开发,于是他设计了一种小型的B语言。Thompson的B语言是在BCPL语言(20世纪60年代中期产生的一种系统编程语言)的基础上开发的,而BCPL语言又可以追溯到最早(且影响最深远)的语言之一——Algol60语言

Algo160语言 --> BCPL语言 --> B语言 --> C语言

通过这个链接可以查看当前世界上常用的编程语言

1.2 标准化

C语言标准有 C89C99C11C17C2x ...
其中,C99 标准(2011 年)是一个分界线。

C89
1989年被正式采用(American National Standard X3.159-1989),故称为 C89,也称为 ANSI C。
该标准随后被 ISO 采纳,成为国际标准ISO/IEC 9899:1990
C89 的主要改动:

  • 定义了 C 标准库
  • 新的预处理命令和特性
  • 函数原型(prototype)
  • 新关键字:const、volatile、signed
  • 宽字符、宽字符串和多字节字符
  • 转化规则、声明(declaration)、类型检查的改变

C95
1995年C89的一个修订和扩充,称为C89 with Amendment 1C95,严格说来并不是一个真正的标准。
C95 的主要改动:

  • 3个新标准头文件:iso646.h、wctype.h、wchar.h;
  • 一些新的标记(token)和宏(macro);
  • 一些新的 printf/scanf 系列函数的格式符;
  • 增加了大量的宽字符和多字节字符函数、常数和类型。

C99(重要)
1999年,在做了一些必要的修正和完善后,ISO 发布了新的 C 语言标准,命名为 ISO/IEC 9899:1999,简称C99
C99 的主要改动:

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

C11
从2007年开始到2011年,C语言标准委员会重新修订C语言标准,并在2011年正式发布了ISO/IEC 9899:2011,简称为 C11 标准
C11 标准新引入的特征不多,但是这些也都十分有用,比如:字节对齐说明符、泛型机制(generic selection)、对多线程的支持、静态断言、原子操作以及对 Unicode 的支持。

C17
C17(也被称为为 C18)是于2018年6月发布的ISO/IEC 9899:2018的非正式名称,也是目前(截止到2020年6月)为止最新的 C语言编程标准,被用来替代 C11 标准。
C17 没有引入新的语言特性,只对 C11 进行了补充和修正

C2x
下一个版本的 C 标准,预计将于2022年12月1日完成。
有许多人提出想为 C 语言添加面向对象的特性,包括增加类、继承、多态等已被 C++ 语言所广泛使用的语法特性,但是最终被委员会驳回了。因为这些复杂的语法特性并不符合 C 语言的设计理念以及设计哲学,况且 C++ 已经有了这些特性,C 语言无需再对它们进行支持。

1.3 基于C的语言

C语言对现代变成语言有着巨大的影响,许多现代变成语言都借鉴了大量的C语言特性,在众多基于C的语言中,以下几种非常具有代表性。

  • C++:包括了所有C语言特性,但增加了
  • Java:基于C++的,所以也继承了C的许多特性。
  • C#:是由C++Java发展起来的一种较新的语言。
  • Perl:最初是一种非常简单的脚本语言,在发展过程中采用了C的许多特性

2. C语言的优缺点

每一种编程语言都有各自的优缺点,这些优缺点都源于该语言的最初用途(编写操作系统和其他系统软件)和语言自身的基础理论体系

C 语言是除汇编语言外最接近底层的语言,语言越接近底层,使用这种语言编写出来的程序运行速度越快,但语言接近底层就需要编写更多的代码来细致地命令系统去做你要做的事情,开发周期也更长。

C语言优点:高效可移植功能强大灵活标准库与UNIX系统的集成
C语言的缺点:更容易隐藏错误、编写出来的代码可能会难以理解、代码程序可能难以修改

3. 编码环境配置

  • 系统:Arch Linux 6.10.10-arch1-1
  • IDE:Visual Code
  • GCC:gcc (GCC) 14.2.1 20240910

这个是后面回来补上的笔记。在 Linux 上配置 Visual Code 的代码环境

  1. 安装 Visual Code
  • 安装工作可以参考 Visual Code 的使用指南,快速到达文章 [[VisualStudio使用指南]]
  1. 安装 gcc
  • Visual Code 上并不能直接编译 C 文件,所以需要安装一个编译器,部分 Linux 系统会默认安装 gcc,使用gcc --version查看是否已经安装
  • 若没有安装,可以使用指令yay -S gcc进行安装
  • 与 Linux 上的 gcc 相对应的,是 Windows 上的 MinGW

在编写一段代码并保存后,点击软件右上角的运行图标来执行程序

3.1 C语言插件

在 Linux 版本的 Visual Code 中并没有 C/C++ 这个插件,所以 emmm 不管,安装了 gcc 之后在 Visual Code 上直接用就行

1. C/C++ Project Generator

这个是项目创建插件,当创建 C/C++ 项目的时候可以调用这个插件。

安装后,使用Ctrl+Shift+p快捷键调出命令面板,在输入栏中输入“Create C project” 或者 “Create C++ project” 创建一个 C/C++ 项目

项目结构:

  • .vscode:包含 luanch.jsontasks.json 文件。luanch.json文件是 VsCode 用于调试的配置文件,当运行程序时,可以选择让 Vscode 先创建出来;tasks.json文件主要用于定义各种任务,包括构建项目、运行测试、部署应用等
  • include:制定包含文件所在的目录路径,文件头中使用 include 引用的库内容,部分外部库会放在 lib 文件夹中
  • lib:存放项目所依赖的外部库文件
  • output:项目编译过程中的中间文件和最终文件存放位置
  • src:存放用户编写的源代码
  • makefile:该文件保存了编译器和连接器的参数选项,表述了该项目中所有源代码文件之间的关系,对多文件编译尤为重要

关于 项目中配置文件的各项配置文件中的详细解析会在后续需要创建项目时加上,目前可以将目光先放在单文件的编译运行及 C 语言的基本知识

2. C/C++ Runner

参考

  1. C语言发展历程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/67537.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Netflix 錯誤 NW-8-18

环境 PS5的奈飞,OpenWrt的树莓派做软路由解决方案 首先重置,如果不行,关机拔掉电源线等待三分钟,重试 Netflix。如果这篇文章对你有用,可以关注本人微信公众号获取更多ヽ(^ω^)ノ ~

Python算法学习

算法学习心得,源码均为Python实现目录绪论数据结构算法算法的特征算法的评价算法的时间复杂度算法的空间复杂度递归汉诺塔问题(递归调用)查找排序二分查找检查排序是否完成冒泡排序选择排序插入排序希尔排序(高级版插入排序)快速排序堆排序(二叉树)python中内置好的堆排…

数学建模学习

数学建模学习,包含各种常用模型和Matlab源码目录 目录目录评价类方法层次分析法搜索引擎算法步骤算法代码F4锁定单元格优劣解距离法算法步骤算法代码自输入权重代码基于熵权法权重的代码灰色关联分析传统数理统计的不足之处该方法的好处算法步骤算法代码基于灰色关联度权重的代…

下载、安装、配置 android-studio-2021.1.1.22-windows

软件安装包:图1 软件安装包提示删除已经存在的版本:图2 提示删除已经存在的版本根据提示选择是:图3 根据提示选择是继续安装:图4图5图6图7图8图9图10

实景三维赋能城镇数字化规划

在数字化浪潮的推动下,城镇规划正经历着前所未有的变革。实景三维技术以其独特的优势,为城镇数字化规划提供了强大的技术支持。今天,我们将深入探讨实景三维技术如何赋能城镇数字化规划。一、城镇规划面临的挑战随着城镇化进程的加快,城镇规划面临着人口增长、资源分配、环…

土地规划中的公共设施布局:科学规划,赋能土地高效利用的艺术

在城市与区域发展的宏大叙事中,公共设施布局如同血管与神经网络,支撑着城市的脉动与感知。合理规划公共设施布局对于提升土地使用效率、促进社会公平、增强居民福祉至关重要。本文将深入探讨如何通过科学方法与创新策略,实现公共设施的高效布局,绘就城市发展的智慧蓝图。一…

js学习1

js实现简单交互 js的外联引入 必须在body里&&你需要交互的元素下方 e.g. <body><div id="box">演示1</div><script src="./演示1.js"></script> </body>实现点击交互 样例1 <!DOCTYPE html> <html l…

动态规划Leetcode96.不同的二叉搜索树

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 解题步骤如下:二叉搜素树的相关概念 寻找规律 思路建立 代码实现1.二叉搜索树的相关概念 ①:若左子树不空,则左子树所有节点的值均小于它的根节点…