【C修炼计划】卷壹 · 初识C语言

news2025/1/11 15:09:48

文章目录

  • 卷壹 · 初识C语言
    • 一 · C语言的起源
    • 二 · C语言的特性
    • 三 · C语言的应用范围
    • 四 · C语言程序结构
    • 五 · C语言书写规范
    • 六 · C语言编译器安装
    • 附 · 参考资料

卷壹 · 初识C语言

一 · C语言的起源


C语言的前生是B语言(BCPL,一种早期的高级语言)。下图描述了C语言的发展历程。
请添加图片描述
ALGOL 60是程序设计语言发展史上的一个里程碑,它首次提出了很多现代程序设计思想,如:函数、递归、结构体等。

ALGOL 60的最大缺陷是缺乏标准输入、输出能力,使其无法兼容不同的设备,最终被淘汰。

CPL是英国剑桥大学研发的一种编程语言,它是在ALGOL 60语言基础上发展而来。CPL语言又催生了BCPL。

美国贝尔实验室在1970年对B语言进行了修改和补充,之后命名为B语言,并使用B语言编写了第一个UNIX操作系统。

1973年,贝尔实验室再次对B语言进行改进,改进后的语言命名为C语言,并成功使用C语言编写了UNIX内核。此内核极其稳定,且具有良好的可移植性,展现了C语言编写系统软件得天独厚的优势。

这个用C语言写的UNIX系统在一些研究机构、大学、政府机关慢慢流行起来,并带动了C语言的发展。

C语言广泛使用后,衍生了许多不同的版本。为了统一,美国国家标准局(ANSI)制定了C标准,于1990年春发布,被称为“ANSIC”标准或“C89”标准。

1990年,“ANSIC”标准被国际标准化组织(ISO)采纳为国际标准,称为“ISOC”标准,也称为“C90”标准。ANSIC(C89)和ISOC(C90)内容基本相同,主要在于制定的组织不同。请添加图片描述

二 · C语言的特性


七个优点:

特性一:简洁的语言
C语言仅包含9种控制语句,32个关键字。程序编写要求不严格,以小写字母为主。语句构成与硬件有关联的较少,且本身不提供与硬件相关的输入输出、文件管理等功能,故c语言拥有非常简洁的编译系统。

特性二:结构化的控制语句
C语言是一种结构化的语言,提供的控制语句具有结构化特征,如for语句、if...else语句和switch语句等。

特性三:丰富的数据类型
C语言包含的数据类型广泛,不仅包含有传统的字符型、整型、浮点型等数据类型,还有其他语言所不具备的数据类型,其中以指针类型使用最为灵活。

特性四:丰富的运算符
C语言包含34个运算符,它将赋值、括号等均视作运算符来操作,使程序的表达式类型和运算符类型非常丰富。

特性五:对物理地址的直接操作
C语言允许对硬件内存地址进行直接读写,并可直接操作硬件。

特性六:较好的可移植性
C语言是面向过程的编程语言,只需要关注所问题的本身,不需要花过多精力去了解相关硬件。针对不同环境,用C语言实现相同功能时的代码基本一致,能够方便地完成移植,极大的减少了程序移植的难度。

特性七:生成执行效率高的程序
C语言可以生成高质量和高效率的目标代码,故通常应用于对代码质量和执行效率要求较高的嵌入式系统程序的编写。

两个缺点:

特性八:较弱的封装能力
这一点使C语言在数据的安全性上有很大缺陷,这也是C和C++的一大区别。

特性九:不严格的语法限制
C语言对变量的类型约束不严格,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。

三 · C语言的应用范围


范围一:编写系统应用程序
C语言提供了底层编程接口,可以直接访问计算机硬件,因此开发底层软件的效率非常高。

范围二:嵌入式设备开发
C语言涉及51单片机、ARM、服务器开发、游戏、驱动程序、网页和爬虫等编程领域。

范围三:写游戏
C语言可以实现高效的图形渲染和游戏逻辑处理,满足不同类型游戏的需求。

范围四:写驱动程序
C语言可以写驱动程序,包括各种硬件驱动。

范围五:服务器开发
C语言可以用于服务器开发,现在的游戏服务器端大多都是C语言或者C++开发的。

范围六:视频图片流媒体处理
C语言可以用来进行视频图片流媒体处理,这是C语言开源库ffmpeglive555sdl等的主要应用。

范围七:编写不依赖计算机硬件的应用程序
C语言是一种不依赖计算机硬件的应用程序设计语言。

范围八:黑客编程
C语言可以进行黑客编程,通过配合汇编获取随机地址、调shellcode等方式,实现对计算机系统的攻击和控制。

范围九:开发其它编程语言
C语言是开发部分其它编程语言的基础。

四 · C语言程序结构


一个C程序就是由若干头文件和函数组成。
请添加图片描述
#include <stdio.h>就是一条预处理命令,它的作用是通知C语言编译系统在对C程序进行正式编译之前需做一些预处理工作。

函数就是实现代码逻辑的一个小的单元。

注:在最新的C标准中,main函数前的类型为int而不是void

此处可以查看我们的第一个实例:输出“Hello, World!”

以下选项哪个是C语言中的包含头文件写法:

  • A.include<stdio.h>
  • B.#include stdio.h
  • C.#include<stdio.h>
  • D.#include[stdio.h]

一个C程序有且只有一个主函数,即main函数。
请添加图片描述
C程序就是执行主函数里的代码,也可以说这个主函数就是C语言中的唯一入口。main前面的int就是主函数的类型。

printf()是格式输出函数,它的功能就是在屏幕上输出指定的信息。例如:

printf("点赞!!!!");

return是函数的返回值,根据函数类型的不同,返回的值也是不同的。

注意:C程序一定是从主函数开始执行的。

五 · C语言书写规范

在写C语言程序的时候为了书写清晰、便于阅读、便于理解、便于维护,在编写程序时应遵循以下规则:

  1. 一个说明或一个语句占一行,例如:包含头文件、一个可执行语句结束都需要换行;

  2. 函数体内的语句要有明显缩进,通常以按一下Tab键为一个缩进;

  3. 括号要成对写,如果需要删除的话也要成对删除;

  4. 当一句可执行语句结束的时候末尾需要有分号;

  5. 代码中所有符号均为英文半角符号。

以一个例子来看:请添加图片描述

注释是为了使别人能看懂你写的程序,也为了使你在若干年后还能看得懂你曾经写的程序而设定的。

注释是写给程序员看的,不是写给电脑看的。所以注释的内容,C语言编译器在编译时会被自动忽略。

C语言注释方法有两种:

  • 多行注释: /* 注释内容 */

  • 单行注释: //注释一行

以下是使用多行注释与单行注释的例子:

/*
点赞
收藏
转发
*/
#include<stdio.h>
int main(){
	printf("Good Good Study\n"); //好好学习 
	printf("Day Day Up\n"); //天天向上 
	return 0;
}

六 · C语言编译器安装

请添加图片描述

第一步:下载安装包
打开网页:https://sourceforge.net/projects/orwelldevcpp/
点击Download,等待5秒即可下载。
请添加图片描述
第二步:安装
下载完成后打开:
在这里插入图片描述

点击运行。

在这里插入图片描述

在这里插入图片描述

直接按OK(语言后面再选)。
在这里插入图片描述

用户协议,选择“I agree”。

在这里插入图片描述
选择Next。

在这里插入图片描述
输入安装路径之后,点击Install开始下载。

在这里插入图片描述
在这里插入图片描述
等待一会下载成功,点击Finish。
在这里插入图片描述
选择语言,中文或英文都可以,点击Next。

在这里插入图片描述

接下来编辑主题,可以按自己喜好选择,选择好后点击Next。

在这里插入图片描述
点击OK,打开编辑器。
在这里插入图片描述

在这里插入图片描述
点击文件->新建->源代码或快捷键Control+N,创建新文件并编写代码(文字太小可以按住Control再滑动滚轮)。
在这里插入图片描述

在这里插入图片描述
点击文件->保存或快捷键Control+S,保存到自己的位置,将后缀改成.c
在这里插入图片描述

在这里插入图片描述
点击运行->编译运行或快捷键F11(部分系统需要fn+F11),运行程序。
在这里插入图片描述
遇到错误就会报错,并将它认为错误的地方标识出来。
在这里插入图片描述
修改代码后保存,再次运行。
在这里插入图片描述
成功了。

附 · 参考资料


C语言起源、特性和发展历程(知乎):传送
C语言(百度百科):传送
c语言能干嘛(百度搜索智能精选):传送
C语言程序结构(慕课网)传送
HelloWorld(OpenJudge)传送

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

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

相关文章

快手正面临着严重的监管阻力,股价上涨潜力将遭受严重限制

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 积极的盈利预警 上月底&#xff0c;快手&#xff08;01024&#xff09;发布公告称&#xff0c;该公司预计2023年上半年的净收入将达到5.6亿元人民币。 考虑到快手报告的2023年第一季度归属于股东的净亏损为- 8.73亿元人民币…

顶尖测试学思维?跟Google大佬学顶级测试思维!

谷歌员工怎么写 python 代码&#xff1f; 谷歌内部的 python 代码规范 熟悉 python 一般都会努力遵循 pep8 规范&#xff0c;也会有一些公司制定内部的代码规范。大公司制定规范的目的不是说你一定要怎样去使用编程语言&#xff0c;而是让大家遵守同一套规则&#xff0c;节省…

选择适合企业的文件传输方式:SFTP与SCP的比较及应用场景分析

企业的发展和业务拓展必不可少地依赖于文件传输。为确保数据安全且传输高效&#xff0c;选择适宜的文件传输方式至关重要。在众多选择中&#xff0c;基于SSH协议的SFTP和SCP备受青睐。 以下将详细介绍SFTP和SCP&#xff0c;分析它们适用的企业文件传输场景。 一、SFTP与SCP的差…

Wireshark数据抓包分析之互联网协议(IP协议)

一、实验目的&#xff1a; 通过wireshark抓包分析IP协议的具体内容 二、预备知识&#xff1a; 1.IP地址存在的意义&#xff0c;就是为了弥补mac地址的不足&#xff0c;用于区分不同的网络 2.还有一些ip协议、ip数据包这些东西 三、网络拓扑 四、实验过程&#xff1a; part1&…

DeepMind UCL 推出新的推理模型和测试集

侦探大师可能会检查丢弃在烟灰缸中的香烟和翻领上的一缕头发&#xff0c;然后宣布他们已经解决了谋杀案。这些惊人的结论是通过推理得出的&#xff0c;推理是一种微妙而独特的人类技术&#xff0c;可以根据看似不同或遥远的物品和事件之间的联系形成预测。推理是当今神经网络研…

面对全球跨境市场挑战,2023下半年如何适应新赛道与全托管布局?

在2023年&#xff0c;跨境电商行业逐渐复苏并持续发展&#xff0c;伴随着一系列有利于跨境贸易的政策逐步推动。 与此同时&#xff0c;随着多个平台陆续推出“全托管模式”&#xff0c;竞争在跨境电商巨头之间进一步激化。那么&#xff0c;面对2023年下半年的全球跨境市场挑战…

【数据结构与算法】链表

文章目录 前言一&#xff1a;链表(LinkedList)1.1 链表分类1.2 介绍1.3 链表的概念及结构 二&#xff1a;单链表2.1 单链表结构示意图2.2 单链表的应用实例2.3 单链表的添加2.3.1 直接添加到链表的尾部&#xff08;不考虑顺序&#xff09;2.3.1.1 整体思路2.3.1.2 代码实现 2.3…

PDA手持终端联发科安卓主板方案定制_4G5G通讯模块PDA方案开发

PDA手持终端是一种便携式电子设备&#xff0c;具备计算、通讯、存储和数据处理等多种功能&#xff0c;广泛应用于商业、工业、医疗、物流和日常生活等领域。 手持终端pda作为一种快速手持数据处理设备&#xff0c;通常集成了与数据采集和传输密切相关的功能&#xff0c;如条码…

opencv 案例实战01-停车场车牌识别实战

需求分析&#xff1a; 车牌识别技术主要应用领域有停车场收费管理&#xff0c;交通流量控制指标测量&#xff0c;车辆定位&#xff0c;汽车防盗&#xff0c;高速公路超速自动化监管、闯红灯电子警察、公路收费站等等功能。对于维护交通安全和城市治安&#xff0c;防止交通堵塞…

探析低代码开发平台的核心能力

低代码开发平台正在成为当今软件开发领域的热门话题。它以其卓越的灵活性和高效性&#xff0c;被越来越多的企业所选择。作为一种创新性的解决方案&#xff0c;低代码开发平台大大降低了开发难度&#xff0c;极大地缩短了开发周期&#xff0c;并且可兼容多平台应用程序的快速迭…

软件测试技术分享丨遇到bug怎么分析?

为什么定位问题如此重要&#xff1f; 可以明确一个问题是不是真的“bug” 很多时候&#xff0c;我们找到了问题的原因&#xff0c;结果发现这根本不是bug。原因明确&#xff0c;误报就会降低 多个系统交互&#xff0c;可以明确指出是哪个系统的缺陷&#xff0c;防止“踢皮球…

TikTok Shop内容规则更新,禁止达人进行多平台联播

01.TikTok Shop禁止达人进行多平台联播 TikTok Shop更新了《TikTok Shop内容规则》&#xff0c;公告显示&#xff0c;TikTok Shop高度重视平台用户的安全&#xff0c;为保障用户体验并保护买家免受潜在的误导性广告的影响&#xff0c;在电商直播活动中&#xff0c;达人不得同时…

Linux Ubuntu系统 OpenVPN 客户端安装

OpenVPN Linux客户端安装 上篇&#xff1a;OpenVPN服务端安装&#xff1a;https://blog.csdn.net/A_yonga/article/details/132456063 安装客户端 yum install openvpn上传服务端生成的客户端配置文件*.ovpn 我上传到/root下了 启动OpenVPN客户端 /usr/sbin/openvpn --dae…

容灾双活方案,异地容灾备份与双活

数据信息的安全性和完整性面临着硬件问题、病毒入侵、自然灾害等各种威胁。为了应对这些威胁&#xff0c;公司需要采取有效的数据保护措施&#xff0c;其中特别重要的是外部容灾备份和双活技术。  让我们来看看其他地方的容灾备份。这是一种可以将数据复制到避免初始区域的设…

Linux TCP协议

传输层的协议主要有三个&#xff1a;TCP协议&#xff08;可靠&#xff09;、UDP协议&#xff08;不可靠&#xff09;和SCPT协议&#xff08;不可靠&#xff09;。 一、TCP协议的概念 TCP协议也称传输控制协议&#xff0c;是一种可靠的、面向连接的、基于字节流的传输层通信协…

python 如何对齐打印包含换行符的字符串 文本对齐 打印对齐换行符 字符串对齐

背景 在 python 编程中&#xff0c;如果遇到存在换行符的字符串&#xff08;例如从别处请求获取到的字符串内容&#xff09;&#xff0c;在使用 print 进行打印时&#xff0c;是比较难以优雅处理的。往往带来文本的混乱。 print 打印包含换行符的文本 如下的代码中&#xff…

【Java】树结构数据的搜索

这里写自定义目录标题 需要实现的效果前端需要的json格式&#xff1a;一定是一个完整的树结构错误错误的返回格式错误的返回格式实现的效果 正确正确的返回格式正确的展示画面 后端逻辑分析代码总览 数据库表结构 需要实现的效果 前端需要的json格式&#xff1a;一定是一个完整…

数据中心电网不稳定,靠什么维护关键数据?

在现代科技驱动的世界中&#xff0c;机房成为了支撑着关键业务和信息流动的核心枢纽。而在机房中&#xff0c;持续稳定的电源是确保各项业务不中断运行的关键要素之一。 为了实现这一目标&#xff0c;机房柴油发电机监控系统应运而生&#xff0c;以强大的技术能力和智能化的特性…

低代码解放生产力,助力企业高效发展

近年来&#xff0c;随着数字化转型的推进&#xff0c;企业对于软件开发的需求日益显著。然而&#xff0c;传统的软件开发模式通常需要耗费大量时间和资源&#xff0c;限制了企业的快速响应能力。为了解决这一难题&#xff0c;低代码开发平台应运而生&#xff0c;成为企业和开发…

某多多商品平台数据采集

某多多商品平台数据采集 声明逆向目标寻找加密位置代码分析补环境补充内容声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者 无关,若有侵权,请私信我立即删除! 逆向目标 Anti-Content参数 寻找加密位置 先在控制台全局搜…