当前位置: 首页 > news >正文

【C语言】学习C语言

C语言简介

C语言是一门十分流行的编程语言,由美国贝尔实验室的 Dennis Ritchie 在 20 世纪 70 年代开发。

C语言具有高效、可移植、灵活、简单等特点,被广泛应用于操作系统、编译器、数据库、图形界面、嵌入式系统、网络通信、游戏等领域。

本文将带你简单了解一下C语言,在了解C语言后我们将学习它。

起源

20 世纪 60 年代,贝尔实验室的 Ken Thompson 在 PDP-7 上开发了 Unix 操作系统。为了更好地实现 Unix 系统,Ken Thompson 使用汇编语言编写了 Unix 的大部分代码。

然而,随着 Unix 系统的逐渐发展,代码越来越复杂,汇编语言的编写效率变得很低。因此,Ken Thompson 决定开发一门更高级的语言,用于替代汇编语言,使得代码编写更加高效、简洁。

在此背景下,C语言应运而生。Dennis Ritchie 和 Ken Thompson 联合开发了 C语言,用于 Unix 系统的内核开发。

C语言以 B语言为基础,吸收了 Algol 60 和 Fortran 等语言的优点,具有简单、高效、可移植等特点。

发展

1972 年,Dennis Ritchie 在《Communications of the ACM》上发表了一篇题为《The Development of the C Language》的论文,介绍了 C语言的设计思想和语法规则。这篇论文使得 C语言开始得到广泛的关注和应用。

1978 年,美国国家标准协会(ANSI)开始制定 C语言的标准化。

1983 年,C语言的第一个标准化版本 ANSI C(也称为 C89)正式发布。C89 对 C语言的语法、库函数等做出了明确的规定,为 C语言的标准化发展奠定了基础。

1990 年,国际标准化组织(ISO)发布了 C语言的国际标准 ISO/IEC 9899:1990(也称为 C90)。C90 在 C89 的基础上进行了一些修改和完善,成为 C语言的国际标准。

1999 年,ISO 发布了 C语言的第二个国际标准 ISO/IEC 9899:1999(也称为 C99)。C99 增加了一些新的特性,如 inline 函数、变长数组、单行注释等,扩展了 C语言的功能和灵活性。

2011 年,ISO 发布了 C语言的第三个国际标准 ISO/IEC 9899:2011(也称为 C11)。C11 增加了一些新的特性,如泛型选择、多线程支持、原子类型等,进一步提高了 C语言的功能和可移植性。

特点

C语言具有以下几个显著的特点:

  • 高效性:C语言是一门高效的编程语言,可以生成高效的机器码,使得C语言编写的程序运行速度快。
  • 可移植性:C语言的代码可以跨平台移植,因为 C语言的语法规则和库函数是标准化的,所以在不同的计算机系统上,只需要对底层的系统函数进行一些调整就可以了。
  • 简单性:C语言的语法简单,易于学习,代码量相对较小,因此很多初学者都会选择学习 C语言。
  • 灵活性:C语言提供了多种编程风格和编程范式,例如面向过程、面向对象、泛型编程等,因此可以应用于不同的编程场景。
  • 可扩展性:C语言提供了丰富的库函数和预处理指令,使得程序员可以方便地扩展和定制自己的程序。

应用领域

C语言被广泛应用于操作系统、编译器、数据库、网络通信、游戏等领域。下面介绍几个典型的应用场景:

  • 操作系统:Unix、Linux、Windows 等操作系统都是用 C语言编写的。
  • 编译器:C语言本身就是一门编译型语言,因此 C语言编译器也是用 C语言编写的。
  • 数据库:许多数据库管理系统,如 MySQL、Oracle 等,都是用 C语言编写的。
  • 网络通信:C语言提供了 socket 库,使得程序员可以方便地实现网络通信功能。
  • 游戏:许多游戏的底层引擎都是用 C语言编写的,例如 Doom、Quake 等游戏。

总之,C语言是一门十分重要的编程语言,具有高效、可移植、灵活、简单等特点,被广泛应用于各个领域。如果你想成为一名程序员,学习C语言将是一个不错的选择。


距离我写第一篇C语言系列的博客已经过去10个月了,中间因为比较忙搁置了一段时间,没想到最终还是完成了这个系列。我很开心,很有成就感,在这个过程中我收获了许多,也养成了写博客的习惯。我相信我会把这个习惯坚持下去,我也相信它会使我受益匪浅。

应该有不少人学习编程接触的第一门语言就是C语言,反正笔者是这样。C语言确实是一门不错的语言,希望初学者能够喜欢上这门语言并掌握它,当然,未来我们都要掌握更多的语言呀。

那么请开启你的C语言之旅吧,希望你能一路劈关斩将、铸就传奇!

C语言之旅

C语言入门

常量

printf函数的用法

scanf函数的用法

运算符及其优先级

进制

原码、反码、补码

判断

循环

break和continue的区别

函数

数组

作用域规则

字符串

存储类

变量占用内存的大小&&内存对齐

typedef

指针

自定义数据类型

文件操作

可变参数

命令行参数

动态分配内存

预处理器

错误处理

希望对你有所帮助,我要开启新的征程了。

相关文章:

【C语言】学习C语言

C语言简介 C语言是一门十分流行的编程语言,由美国贝尔实验室的 Dennis Ritchie 在 20 世纪 70 年代开发。 C语言具有高效、可移植、灵活、简单等特点,被广泛应用于操作系统、编译器、数据库、图形界面、嵌入式系统、网络通信、游戏等领域。 本文将带你…...

C 深入指针(2)

目录 1 野指针 1.1 成因 1.2 如何规避野指针 2 assert 断言 2.1 用法 2.2 assert 的优点 2.1 assert 的缺点 3 小注解 3.1 Debug 和 Release 1 野指针 【概念】: 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的&#…...

FileLink跨网文件交换,推动企业高效协作|半导体行业解决方案

随着信息技术的迅猛发展,全球信息产业已经迎来了前所未有的繁荣与变革。在这场科技革命中,半导体作为信息产业的基础与核心,其重要性日益凸显,半导体的应用场景和市场需求将进一步扩大。 然而,在这一繁荣的背后&#x…...

代码随想录day56 | 动态规划P16 | ● 583. ● 72. ● 编辑距离总结篇

583. 两个字符串的删除操作 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1: 输入: word1 "sea", word2 "eat" 输出: 2 解释: 第一步将 &quo…...

ASP.NET网络在线考试系统

摘 要 随着计算机技术的发展和互联网时代的到来,人们已经进入了信息时代,也有人称为数字化时代。数在数字化的网络环境下,学生希望得到个性化的满足,根据自己的情况进行学习,同时也希望能够得到科学的评价&#xff0c…...

天锐绿盾 | 办公加密系统,源代码防泄密、源代码透明加密、防止开发部门人员泄露源码

天锐绿盾作为一款专注于数据安全与防泄密的专业解决方案,它确实提供了针对源代码防泄密的功能,帮助企业保护其核心的知识产权。 PC地址: https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 以下是天锐绿盾可能采…...

Day1| Java基础 | 1 面向对象特性

Day1 | Java基础 | 1 面向对象特性 基础补充版Java中的开闭原则面向对象继承实现继承this和super关键字修饰符Object类和转型子父类初始化顺序 多态一个简单应用在构造方法中调用多态方法多态与向下转型 问题回答版面向对象面向对象的三大特性是什么?多态特性你是怎…...

Spring 事务失效的几种情况

目录 1. 事务方法不是public 2. 自调用问题 3. 异常处理不当 4. 数据源或事务管理器配置错误 5. 事务传播行为不当 6. 代理方式不正确 7. 事务同步问题 1. 事务方法不是public 在Spring中,默认情况下,只有public方法上的Transactional注解才会被代…...

【Linux 命令操作】如何在 Linux 中使用多行注释呢?

文章目录 1. 给代码进行多行注释2. 给代码取消多行注释 1. 给代码进行多行注释 🐧① 首先用 vim 打开代码,按 Esc进入命令模式(Normal mode); 🐧② 然后按住 ctrl v 进入列模式; 🐧③ 再通过按 h(左)、j(…...

【RPC】Dubbo接口测试

关于rpc,推荐看看这篇 : 既然有HTTP协议,为什么还要有RPC 一、Dubbo 是一款alibaba开源的高性能服务框架: 分布式服务框架高性能和透明化的RPC远程服务调用方案SOA服务治理方案 二、Dubbo基础架构 三、 Dubbo接口测试 1、jme…...

PVZ2 植物克僵尸【第二期】

众所周知,PVZ2(植物大战僵尸2)中有许多恶心的僵尸,而我们不得不派出它们的————克星!(*为建议方法) 5.战机小鬼 战机小鬼,恶心会发射子弹,所以: 1&…...

libcity笔记:libcity/data/batch.py

1 Batch 2 BatchPAD...

【Java EE】多线程(二)Thread 类与常用方法

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更…...

AGV无人叉车 | 我们为什么要投资“智慧生产”

AGV 作为一种智能工业车辆机器人,无人叉车充分融合叉车技术和AGV技术,近年来在仓储物流领域的应用逐步扩大。在传统叉车厂商、传统AGV厂商、物流集成商及仓储机器人企业等各方力量推动下,无人叉车市场在竞合中快速发展,并促使无人…...

【C++】滑动窗口:将x减到0的最小操作数

1.题目 2.算法思路 这个题目难在要转化一下才能用滑动窗口。 题意是需要在数组的前后两段区间进行解题,但同时对两段区间进行操作是比较困难的,我们可以将中间这段区间只和与nums_sum-x(数组总和-x)进行比较,这样就可…...

运动控制“MC_MoveVelocity“功能块详细应用介绍

1、运动控制单位u/s介绍 运动控制单位[u/s]介绍-CSDN博客文章浏览阅读91次。运动控制很多手册上会写这样的单位,这里的u是英文单词unit的缩写,也就是单位的意思,所以这里的单位不是微米/秒,也不是毫米/秒,这里是一个泛指,当我们的单位选择脉冲时,它就是脉冲/秒,也就是…...

9种单片机常用的软件架构

长文预警,加代码5000多字,写了4个多小时,盘软件架构,这篇文章就够了! 可能很多工程师,工作了很多年,都不会有软件架构的概念。 因为我在做研发工程师的第6年,才开始意识到这个东西,在…...

PyQt5中重要的概念:信号与槽

PyQt中信号与槽概念定义如下(网络上引用的): 信号(signal)和槽(slot)是Qt的核心机制,也是在PyQt编程中对象之间进行通信的机制。在创建事件循环之后,通过建立信号和槽的…...

MacOS快速安装FFmpeg,并使用FFmpeg转换视频

前言:目前正在接入flv视频流,但是没有一个合适的flv视频流地址。网上提供的flv也都不是H264AAC(一种视频和音频编解码器组合),所以想通过fmpeg来将flv文件转换为H264AAC。 一、MacOS环境 博主的MacOS环境(…...

docker部署nginx并配置https

1.准备SSL证书: 生成私钥:运行以下命令生成一个私钥文件。 生成证书请求(CSR):运行以下命令生成证书请求文件。 生成自签名证书:使用以下命令生成自签名证书。 openssl genrsa -out example.com.key 2048 …...

五一小长假,景区智慧公厕发挥了那些作用?

五一小长假已经过去,在旅途中相信大家非常开心,其中也不乏一些细节让你有了更好的体验,而在您享受美景、畅游风光的同时,或许并未留意到那个角落里,默默为您服务的智慧公厕。是的,它们将成为您旅途中不可或…...

Spring - 9 ( 10000 字 Spring 入门级教程 )

一: MyBatis XML 配置文件 Mybatis 的开发有两种方式: 注解XML 我们已经学习了注解的方式, 接下来我们学习 XML 的方式 MyBatis XML 的方式需要以下两步: 配置数据库连接字符串和 MyBatis写持久层代码 1.1 配置连接字符串和 MyBatis 此步骤需要进…...

shpfile转GeoJSON;控制shp转GeoJSON的精度;如何获取GeoJSON;GeoJSON是什么有什么用;GeoJSON结构详解(带数据示例)

目录 一、GeoJSON是什么 二、GeoJSON的结构组成 2.1、点(Point)数据示例 2.2、线(LineString)数据示例 2.3、面(Polygon)数据示例 2.4、特征(Feature)数据示例 2.5、特征集合&…...

没有强有力的科技支撑,就没有保密工作的高质量发展。新修订的《中华人民共和国保守国家秘密法》在总则中新增保密科技创新有关内容包括()

没有强有力的科技支撑,就没有保密工作的高质量发展。新修订的《中华人民共和国保守国家秘密法》在总则中新增保密科技创新有关内容包括() 点击查看答案内容: A.国家鼓励和支持保密科学技术研究和应用B.提升自主创新能力 C.明确依法保护保密领…...

【快速入门】数据库的增删改查与结构讲解

文章的操作都是基于小皮php study的MySQL5.7.26进行演示 what 数据库是能长期存储在计算机内,有组织的,可共享的大量数据的集合。数据库中的数据按照一定的数据模型存储,具有较小的冗余性,较高的独立性和易扩展性,并为…...

使用AIGC生成软件类图表

文章目录 如何使用 AI 生成软件类图表什么是 MermaidMermaid 的图片如何保存?mermaid.liveDraw.io Mermaid可以画什么图?流程图时序图 / 序列图类图状态图甘特图实体关系图 / ER图 如何使用 AI 生成软件类图表 ChatGPT 大语言模型不能直接生成各类图表。…...

机器学习实践:超市商品购买关联规则分析

第2关:动手实现Apriori算法 任务描述 本关任务:编写 Python 代码实现 Apriori 算法。 相关知识 为了完成本关任务,你需要掌握 Apriori 算法流程。 Apriori 算法流程 Apriori 算法的两个输人参数分别是最小支持度和数据集。该算法首先会生成所…...

自动化图像识别:提高效率和准确性的新途径

自动化图像识别是人工智能领域中的一项关键技术,它通过算法自动解析图像内容,为各种应用提供准确的信息。随着技术的不断发展,自动化图像识别在提高效率和准确性方面展现出新的途径。 一、深度学习技术的应用 深度学习是自动化图像识别领域…...

根据最近拒包项目总结,详细讲解Google最新政策(上)

关于占比最多的移动垃圾软件拒审问题 移动垃圾软件(Mobile Unwanted Software)特征表现1> 具有欺骗性,承诺其无法实现的价值主张。2> 诱骗用户进行安装,或搭载在用户安装的其他程序上。3> 不向用户告知其所有主要功能和重要功能。4> 以非预期方式影响用户的系统…...

【Qt之OpenGL】01创建OpenGL窗口

1.创建子类继承QOpenGLWidget 2.重写三个虚函数 /** 设置OpenGL的资源和状态,最先调用且调用一次* brief initializeGL*/ virtual void initializeGL() override; /** 设置OpenGL视口、投影等,当widget调整大小(或首次显示)时调用* brief resizeGL* param w* para…...