【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

指针

自定义数据类型

文件操作

可变参数

命令行参数

动态分配内存

预处理器

错误处理

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 事务失效的几种情况

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

【Ajax零基础教程】-----第一课 Ajax简介

一、什么是ajax ajax即 Asynchronous javascript And XML (异步 javaScript 和 XML) 是一种创建交互式,快速动态应用的网页开发技术,无需重新加载整个网页的情况下,能够更新页面局部数据的技术。 二、为什么使用Ajax 通过在后台与服务器进行少…

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

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

值得收藏!修复Windows 10/11中找不到输出或输入设备的五种方法

序言 这篇文章主要关注处理声音输出/输入设备未发现的问题。它提供了许多可行的方法,帮助了许多Windows用户。阅读以下内容以找到你的解决方案。 最近,我将Windows 10更新到21H2,发现我的音频无法工作。当我把鼠标放在任务栏上的声音图标(上面有一个十字图标)上时,它会…

6.Nginx

Nginx反向代理 将前端发送的动态请求有Nginx转发到后端服务器 那为何要多一步转发而不直接发送到后端呢? 反向代理的好处: 提高访问速度(可以在nginx做缓存,如果请求的是同样的接口地址,这样就不用多次请求后端&#…

TCP经典异常问题探讨与解决

作者:kernelxing TCP的经典异常问题无非就是丢包和连接中断,在这里我打算与各位聊一聊TCP的RST到底是什么?现网中的RST问题有哪些模样?我们如何去应对、解决?本文将从RST原理、排查手段、现网痛难点案例三个板块自上而…

鸿蒙编译子系统详解(二)main.py

1.5.4源码解析 1.5.4.1 build/hb/main.py脚本 这个脚本是编译的主程序脚本,流程如下: 首先是初始化各种module类,然后运行对应模块。 hb分为build,set,env,clean,tool,help几个模块,模块源码位于build/hb/modules/目录下&#xff…

ctfshow——SSRF

文章目录 web 351web 352web 353web 354web 355web 356web357web 358web 359web 360 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统…

python实现的信号合成分析系统(DSP)

python实现的信号合成分析系统(DSP) 流程 1、在QT界面上设置好信号频率,采样频率,采样点数 2、使用np构建sin函数 3、使用matplotlib画出 4、分别分析合成信号的FFT频域信息1、效果图 2、示例代码 def btn_com_clicked(self):# 信号合成分析Fs = self.com_fs_edit_value #…

C++程序设计教案

文章目录: 一:软件安装环境 第一种:vc2012 第二种:Dev-C 第三种:小熊猫C 二:语法基础 1.相关 1.1 注释 1.2 换行符 1.3 规范 1.4 关键字 1.5 ASCll码表 1.6 转义字符 2.基本框架 2.1 第一种&…

巨控GRM561/562/563/564Q杀菌信息远程监控

摘要 通过程序编写、手机APP画面制作等运行系统,实现电脑及手机APP显示的历史曲线画面和数据图形化的实时性。 不仅流程效率提升90%以上,同时为杀菌生产提供有利的质量保障,还有效规避因触屏及内存卡的突发异常导致历史数据的丢失&#xff0…

SGP.22-V.3.1-安全1

有任何关于GSMA\IOT\eSIM\RSP\业务应用场景相关的问题,欢迎W: xiangcunge59 一起讨论, 共同进步 (加的时候请注明: 来自CSDN-iot). 2.6.4.4 Command TLV MACing and Encryption 在提供的文件 "RSP Technical Specification Version 3.1 Final" 中&a…

R语言:卡方检验

χ2检验(Chi-Square Test)是一种用于检验分类变量之间是否存在相关性的统计方法。χ2检验的原理基于观察到的频数与期望频数之间的偏差来判断分类变量之间是否存在显著的关联。 χ2检验的原理可以概括为以下几个步骤: 建立假…

Web实操(6),基础知识学习(24~)

1.[ZJCTF 2019]NiZhuanSiWei1 (1)进入环境后看到一篇php代码,开始我简单的以为是一题常规的php伪协议,多次试错后发现它并没有那么简单,它包含了基础的文件包含,伪协议还有反序列化 (2&#x…

sudo netstat -tlnp返回结果解析及协议

sudo netstat -tlnp 是一个在Unix和类Unix系统中(如Linux)常用的命令,用于显示网络连接、路由表、接口统计等网络相关信息。该命令的各个选项含义如下: sudo: 这是一个命令,用于允许授权用户执行通常作为超级用户&a…

streamlit通过子目录访问

运行命令: streamlit hello 系统默认使用8501端口启动服务: 如果想通过子目录访问服务,可以这么启动服务 streamlit hello --server.baseUrlPath "app" 也可以通过以下命令换端口 streamlit hello --server.port 9999 参考&…

Python - pyplot 画一个漂亮的饼图 Pie charts

目录 一.引言 二.颜色选择 三.绘制饼图 四.总结 一.引言 因工作需求,需要绘制一些数据的饼图,使用默认的颜色绘制不够美观,下面我们找一些好看的颜色美化一些饼图。 二.颜色选择 我们根据 plt 给出的一些好看颜色对应的编码即可为每一个…

java设计模式 桥接

桥接模式(Bridge Pattern)是软件工程中的一种设计模式,它将抽象部分与它的实现部分分离,使它们可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦…

HackMyVM-Animetronic

目录 信息收集 arp nmap nikto whatweb WEB web信息收集 feroxbuster steghide exiftool hydra ssh连接 提权 系统信息收集 socat提权 信息收集 arp ┌──(root㉿0x00)-[~/HackMyVM] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 08:00:27:9d:6d:7…

【无标题】程序设计和c语言-谭浩强配套(适合专升本)

一晃大半年没更新了,一直在备考,想着这几天把前段时间学的c语言给大家分享一下,在此做了一个专栏,有需要的小伙伴可私信获取。 说明:本专栏所有内容皆适合专升本复习资料,本人手上也有日常刷题整理的错题以…