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

天锐绿盾 | 办公加密系统,源代码防泄密、源代码透明加密、防止开发部门人员泄露源码
天锐绿盾作为一款专注于数据安全与防泄密的专业解决方案,它确实提供了针对源代码防泄密的功能,帮助企业保护其核心的知识产权。 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 …...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...