再学C语言2:概览

news2024/11/30 2:25:40

重新把C语言梳理一遍,学习在VSCode中进行C语言编程

 一、C语言起源

1972年,贝尔实验室的Dennis Ritchie在C语言的基础上设计出一种新的语言,即C语言

C是作为从事实际编程工作的程序员的一种工具儿出现,是为编程人员开发的语言

二、C语言特点

C语言已经成为最重要和最流行的编程语言之一

C是通往C++的必由之路

1)设计特性:强大的控制结构,支持自顶向下规划、结构化编程、模块化设计

2)运行高效:代码结构紧凑、运行速度快

3)可移植性:不需或仅需很少的改动就可以在其他系统上运行

4)强大而灵活的性能:应用范围广泛

5)面向编程人员:允许访问硬件;丰富的运算符;库函数为开发提供支撑

三、C语言发展

1)应用领域逐渐从操作系统拓展到应用软件开发,并逐渐向嵌入式开发领域进一步拓展。

2)C++与C相比,引入了面向对象编程思想

四、计算机基本原理

1)组成:CPU、RAM、硬盘、外设

2)CPU只能理解有限的指令——指令集,且这些指令非常具体

3)存储在计算机中的一切内容都是数字,包括数字、字符、指令

4)计算机程序最终必须以机器语言来表示,供计算机理解和执行

5)机器语言与高级编程语言之间的桥梁——编译器

五、高级计算机语言和编译器

1)高级编程语言可以简化编程过程

2)编译器负责将高级语言程序解释成计算机可以理解的详细机器语言指令集

3)使用不通的编译器可以将同一高级语言程序转换为不同的机器语言程序

4)高级语言以更抽象的方式描述动作,不需要与特定的CPU或指令集相关联,更便于人学习和使用

六、C语言开发步骤

定义程序目标 - 设计程序 - 编写代码 - 编译 - 运行程序 - 调试和测试 - 维护和修改

应该养成在编写代码前先进行规划的习惯

七、编程机制

1)C编程的基本策略是使用程序将源代码文件转换为可执行文件,可执行文件中包含的是可以运行的机器语言代码

2)C分两步完成该转换工作:编译(生成目标文件)和链接(生成可执行文件)

3)链接器的作用:将目标代码、系统的标准启动代码和库代码结合在一起,并存放在单个可执行文件中

4)UNIX C编译器:cc

5)Linux C编译器:gcc

6)Windows:很多厂商提供的基于Windows的集成开发环境(IDE)

八、语言标准

1)期初,C没有官方的标准

2)Brian Kernighan和Dennis Ritchie编写的The Programming Language 第一版(1978年)成为大家普遍接受的标准,通常成为K&R C或经典C

3)ANSI C:美国国家标准化组织(ANSI)为C语言制定的一套标准,1989年正式采用

4)ISO C:国际标准化组织1990年采用的一个C标准,与ANSI C在本质上是同一个标准

5)C89或C90:ANSI/ISO标准的最终版本

6)C99:三点改变——国际化编程、修正现有不足、计算的实用性;C99的修改保持了C的本质特性,C继续是一种简短、清楚、高效的语言

九、小结

1)C是一种强大、简洁的编程语言;提供了有用的编程工具和对硬件良好的控制;在从一个系统向另一个系统移植方面相对更容易

2)C是一种需要编译的语言,通过编译-链接将C语言源代码转换为可执行代码的程序

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

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

相关文章

【脚本项目源码】Python制作桌面宠物,这么可爱的萌宠你不想拥有吗?

前言 本文给大家分享的是如何通过利用Python制作桌面宠物,废话不多直接开整~ 开发工具 Python版本: 3.6 相关模块: random模块 os模块 cfg模块 sys模块 PyQt5模块 环境搭建 安装Python并添加到环境变量,pip安装需要的相…

skynet设计原理和使用

skynet设计原理一、多核并发编程方式二、skynet2.1、skynet简介2.2、环境准备2.3、编译安装2.4、Actor 模型2.5、消息队列2.6、actor公平调度三、skynet的使用3.1、第一个skynet程序3.2、skynet网络消息3.3、skynet定时消息3.4、skynet actor间消息四、vscode调试skynet总结后言…

Python比较难的知识点: 迭代器与生成器

迭代器与生成器是Python比较难的知识点, 在学Python之前, 我已经有了多年的C语言与MATLAB的使用经验了, 但是学这些知识点, 还是有一定的困难, 总觉得是一知半解的. 现在, 经过一段时间的学习和梳理, 感觉是搞懂了, 写下这篇文章与大家分享. 学习具体概念技术之前, 得知道这些…

c++ - 第17节 - AVL树和红黑树

1.AVL树 1.1.AVL树的概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发…

Mybatis:MyBatis的逆向工程(10)

Mybaits笔记框架:https://blog.csdn.net/qq_43751200/article/details/128154837 Mybatis中文官方文档: https://mybatis.org/mybatis-3/zh/index.html Mybati的逆向工程1. 正向工程 VS 逆向工程2. 创建逆向工程的步骤(MyBatis3Simple清新简洁…

Go 1.20要来了,看看都有哪些变化-第1篇

前言 Go官方团队在2022.12.08发布了Go 1.20 rc1(release candidate)版本,Go 1.20的正式release版本预计会在2023年2月份发布。 让我们先睹为快,看看Go 1.20给我们带来了哪些变化。(文末有彩蛋!) 安装方法: $ go install golan…

[附源码]Nodejs计算机毕业设计基于web的火车订票管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

阅读器消退之际:文石造产品,掌阅塑生态

配图来自Canva可画 阅读器正在变得小众,似乎自Kindle以来营造的那种“阅读的生活方式”,已经被证明是一个伪命题:会阅读的人,无论如何都会去阅读;不会阅读的人,阅读器的归宿终究是一个“泡面盖”。于是&am…

Android原生项目接入flutter_boost4.0

折腾了好几天,经验思维导致的,记录一下踩坑。 官方接入步骤官方文档 接入原生,就3个步骤,我都能折腾好久,浪费时间。 flutter部分很简单,按文档配置就行,在pubspec.yaml依赖就好了。 &#…

Ceph性能瓶颈分析与优化(混合盘篇)

原文链接: Ceph性能瓶颈分析与优化(混合盘篇) - 知乎背景ssdhdd的混合盘场景在各个存储厂商中算是一种典型应用场景。 但是经过测试(4k随机写)发现,加了nvme ssd做ceph的wal和db后,性能提升仅一倍以内且nvme盘性能余量较大。所以希望通过对问题瓶颈进行…

目标检测数据标注案例-高清地图中障碍物(汽车)标注

计算机视觉在无人机中领域中有何作用? 无人机能够在空中识别、分类和追踪目标。无人机的摄像头和感应器可以捕获数据并进行分析,以提取重要信息。 AI可以自动提取视觉数据信息,准确识别、说明和追踪图像和视频中的目标。例如高空检测工作,…

Nacos 配置中心之长轮询--客户端

先来看下长轮询调用的链路 客户端 入口 在 NacosConfigService 初始化的时候,会初始化两个组件 一是网络组件,也就是http数据处理的 (起作用的是 ServerHttpAgent)二是客户端的长轮询ClientWorker public NacosConfigService(Properties properties) throws NacosException…

本地连接docker mysql

1.拉取镜像 docker pull mysql 2.启动mysql实例容器 docker run --name mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORDmysql_pw -d mysql --name 为mysql的实例设置别名。 -p 3307为对外暴露的端口。3306是内部端口 -e MYSQL_ROOT_PASSWORD 设置mysql登录密码 -d 以守…

1.41.5 模型评估和选择,正则化和交叉验证

1.4&1.5 模型评估和选择,正则化和交叉验证模型评估和选择训练误差和测试误差过拟合正则化与交叉验证正则化交叉验证模型评估和选择 训练误差和测试误差 将预测系统的X作为输入,输入到模型里面,就可以得到预测结果。 学习到的模型&…

UNIX网络编程卷一 学习笔记 第五章 TCP客户/服务器程序示例

本章将编写一个完整的TCP客户/服务器程序,这个简单例子是执行以下步骤的一个回射服务器: 1.客户从标准输入读入一行文本,并写给服务器; 2.服务器从网络输入读入这行文本,并回射给客户; 3.客户从网络输入读入…

Spring Ioc 依赖来源-7

1. 依赖查找的来源:除容器内建和自定义Spring Bean之外,还有其他来源提供依赖查找吗? 查找来源 Spring 內建 BeanDefintion Spring 內建单例对象 当spring在注解环境下面, 这个 registerAnnotationConfigProcessors API会被调用, 它会被…

Xilinx Vivado的RTL分析(RTL analysis)、综合(synthesis)和实现(implementation)的区别?

1、一般流程 Xilinx 的开发工具Vivado其实还是比较好上手的,在左边的设计流程导航已经把FPGA的开发过程按先后顺序给排列出来了: Project Manager:项目管理器,此项是对项目的参数进行设置 IP Integrator:IP集成器&…

广域铭岛参编《数智化供应链参考架构》标准正式发布

近日,广域铭岛参编的《数智化供应链参考架构》标准正式发布。该标准由工业互联网产业联盟(以下简称“联盟/AII”)发布,是国内首个数智化供应链领域的参考架构标准,明确了新兴的数字化和智能化技术如何在供应链领域应用…

大数据进程管理

进程管理 查看进程 进程查看命令 ps la | head -5,能够观察所有系统的数据 ps axjf | head -20,连同部分程序树状态 ps l仅查看自己的bash相关的进程 ps aux观察系统所有进程 属性含义USER进程使用者PID进程标识符%CPU进程使用掉的CPU 资源百分比%MEM…

一个不错的docker支持音频的rdp桌面

docker pull danielguerra/xfce4-rdp-audio 获取该镜像后,运行 docker run -d --name xfce4_0 --shm-size 1g -p 3389:3389 danielguerra/xfce4-rdp-audio相当于开了3个不同的系统容器,端口分别的13389,23389,33389,这时用远程桌面就可以连…