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

文章目录

  • 卷壹 · 初识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.rhkb.cn/news/110782.html

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

相关文章

1. 卷积原理

① 卷积核不停的在原图上进行滑动&#xff0c;对应元素相乘再相加。 ② 下图为每次滑动移动1格&#xff0c;然后再利用原图与卷积核上的数值进行计算得到缩略图矩阵的数据&#xff0c;如下图右所示。 import torch import torch.nn.functional as Finput torch.tensor([[1, 2…

华为AR路由器 典型配置案例——以太网交换

目录 Eth-Trunk 例&#xff1a;配置三层链路聚合 组网需求 操作步骤 检查配置结果 配置脚本 VLAN 举例&#xff1a;配置基于接口划分VLAN&#xff0c;实现同一VLAN内的互通&#xff08;同设备&#xff09; 组网需求 操作步骤 检查配置结果 配置脚本 举例&#xff…

C# 使用SnsSharp实现文件拖拽功能

CSDN下载地址&#xff1a;https://download.csdn.net/download/sns1991sns/88041637 gitee下载地址&#xff1a;https://gitee.com/linsns/snssharp 技术优势&#xff1a; 不仅使用简单&#xff0c;还可解决由于系统管理权限导致的文件拖拽无响应问题。 使用举例&#xff1a…

PDF制作成翻页电子书

在日常工作中&#xff0c;大部分人使用的都是PDF文档发送给客户&#xff0c;但是PDF文档通常是静态的&#xff0c;缺乏交互性和视觉吸引力。那你有没有想过把它转换成翻页的电子书呢&#xff1f; 小编将告诉你操作步骤&#xff0c;非常简单 1.搜索FLBOOK在线制作电子杂志平台 …

十二、pikachu之URL重定向

文章目录 1、URL重定向概述2、实战3、URL跳转的几种方式:3.1 META标签内跳转3.2 javascript跳转3.3 header头跳转 1、URL重定向概述 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。如果后端采用了前端传进来的&#xff08;可能是用户传参&#xff0c;或者之前预埋…

官宣|美洽AI客服 x HelpLook 达成联盟合作,AI ChatBot 解放客户运营

重磅消息 美洽AI客服和HelpLook 正式建立合作关系 随着企业扩大规模和业务增长&#xff0c;客户咨询和服务请求增加。传统人工客服难以处理大量咨询&#xff0c;而智能化的AI客服可以同时满足多个客户需求。AI客服系统建立和训练好后&#xff0c;能自动化处理客户咨询&#x…

【计算机网络】HTTPs 传输流程

HTTPS和HTTP的区别 1、HTTP协议传输的数据都是未加密的&#xff0c;是明文的&#xff0c;使用HTTP协议传输隐私信息非常不安 HTTPS协议是由SSLHTTP协议构建的可进行加密传输、身份认证的网络协议&#xff0c;要比http协议安全。 2、HTTPS协议需要到CA申请证书&#xff0c;一般…

【高阶数据结构】二叉树搜索树 {概念;实现:核心结构,增删查,默认成员函数;应用:K模型和KV模型;性能分析;相关练习}

二叉搜索树 一、二叉搜索树的概念 二叉搜索树又称二叉排序树&#xff0c;它可以是一棵空树&#xff0c;若果不为空则满足以下性质: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点…

null和undefined区别

1.undefined&#xff0c;表示无值。 比如下面场景&#xff1a; a. 变量被声明了&#xff0c;但是没有被赋值&#xff1b; b. 调用函数的时候&#xff0c;应该给函数传参却没有给函数传这个参数打印出来就是 undefined&#xff1b; c. 访问一个对象中没有的属性&#xff1b;…

水论文路线图

1、定基准模型 首先找大量的论文&#xff0c;基本是顶刊顶会&#xff0c;大概率会改代码&#xff0c;且给的代码有README&#xff0c;代码有系统性&#xff0c;方便你以后改动&#xff0c;有了基准模型之后。尽力把这个基准模型的模型部分(models)给看懂&#xff0c;值域数据及…

适合本地运营的同城团购优质商家圈子小程序开发演示

很火的一款适合本地同城运营的同城团购商家圈子小程序。有很多城市都有在用这个小程序做同城资源&#xff0c;实现完美变现。 小程序功能就是将本地商家邀请入驻&#xff0c;以团购的形式出售商家产品或服务套餐。借助微信的社交属性配合同城推广员可以迅速推广起来。 对于商…

Linux内核学习(十二)—— 页高速缓存和页回写(基于Linux 2.6内核)

目录 一、缓存手段 二、Linux 页高速缓存 三、flusher 线程 Linux 内核实现了一个被叫做页高速缓存&#xff08;page cache&#xff09;的磁盘缓存&#xff0c;它主要用来减少对磁盘的 I/O 操作。它是通过把磁盘中的数据缓存到内存中&#xff0c;把对磁盘的访问变为对物理内…

解决Three.js辉光背景不透明

使用此pass canvas元素的background都能看到 不过相应的辉光颜色和背景颜色不相容的地方看起来颜色会怪一些 如图 不过如果是纯色就没什么问题了 //ts-nocheck /** Author: hongbin* Date: 2023-04-06 11:44:14* LastEditors: hongbin* LastEditTime: 2023-04-06 11:49:23* De…

RT_Thread内核机制学习(四)队列

队列 队列中每个消息块都有一个头部&#xff0c;指向下一个消息块。 消息块的内存是连在一起的&#xff0c;但是是用链表组织的。 struct rt_messagequeue {struct rt_ipc_object parent; /**< inherit from ipc_object */void *m…

go vet中的那些检测项

go vet 是 Go 语言自带的一个工具&#xff0c;用于分析 Go 代码中的常见错误和潜在问题。它可以检查代码中可能存在的各种问题&#xff0c;例如&#xff1a; 未使用的变量、函数或包 可疑的函数调用 错误的函数签名 程序中的竞态条件 错误的类型转换等 本文意图指令当前go vet所…

在 AWS 中导入 qcow2 镜像

文章目录 在 AWS 中导入 qcow2 镜像使用的格式和问题步骤概述前提条件转换镜像格式并上传至 S3创建角色并配置策略策略文件内容创建container.json配置文件导入镜像创建 AMI 并启动实例参考:在 AWS 中导入 qcow2 镜像 当我们在多云环境中部署应用时,有时候可能需要把基于 qem…

装备一台ubuntu

配置远程连接&#xff1a; ubuntu的root用户无法远程登入问题&#xff1a; openssh安装命令&#xff1a; sudo apt-get install openssh-server 安装完成通过以下命令查看SSH是否启动 ps -e | grep ssh 如果只有ssh-agent表示还没启动&#xff0c;需要&#xff1a; /etc/i…

2023高教社杯数学建模思路 - 复盘:校园消费行为分析

文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…

Visual Studio软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Visual Studio是微软公司开发的一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;广泛应用于Windows平台上的应用程序和Web应用程序的开发。以下是Visual Studio软件的主要特点和功能&#xff1a; 集成开发环境&#x…

力扣:74. 搜索二维矩阵(Python3)

题目&#xff1a; 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非递减顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&#xff0c;返回 true &#xff1b;否则&#xff0c;返…