当前位置: 首页 > news >正文

C语言入门-1.1 C语言概述

想要学好一门计算机编程语言,就和谈一个女朋友是一样的,需要对其深入了解。

1、计算机语言

(1)什么是计算机语言?

        顾名思义,就是计算机之间交流的语言,就和人一样,咱们都是使用普通话或方言进行交流,如果我们要和国外人进行交流,那我们可以可能就需要使用英文进行交流。

 (2)人如何和计算机进行交流?

        那就需要人理解计算机语言,给计算机发送指令(计算机能认识的命令)让其执行帮我们实现想要的功能。

(3)人如何给计算机下发指令?

        如:windows系统中可以使用命令窗口执行一些指令,例如:dir、cd、rd、md、treed等;但是其更多的是执行一些特定的指令,对于一些复杂的功能,可以通过编程(或俗称代码)让计算机去执行,从而实现功能。

(4)可以用哪些编程语言有哪些?

        编程语言有很多种,如:C、C++、Go、Java、JavaScript、Python、C# 等。

(5)这些编程语言计算机如何听懂的?

        第一代:机器语言时代,计算机其实只能听懂机器语言,或者成为二进制码(即0 和 1,这个主要是计算机硬件决定的),如:0000 0000 00000010000 表示 LOAD A 16,而这种表示方式也就拒接99%的程序员;

        第二代:汇编语言时代,使用一些英文(助记符)来表示一些操作,这种助记符就构成了汇编语言,如:MOVE、ADD 等,汇编语言通过汇编器转换为机器码,从而交给计算机进行执行;相较于机器语言,能通过助记符提高功能的实现效率,也就可以让40%的程序员参与其中了,但汇编是面向机器的,不同的计算机会有不用的汇编语言,导致你的计算机只能听懂的,我的计算计只能听懂我的,不能实现程序的移植。

        第三代:高级编程语言时代,这种编程语言就是更加接近人们的使用习惯,会使用一些特定单词(或称为语法)来实现制定的功能,如:判断经常会使用到 if,循环经常会使用到 while,同事配合上一些数学中的公式等。而这些编程语言要让计算机能执行,就需要通过编译器、解释器编译(类似于你会英语就能和外国人直接交流)或解释(类似于你不会英语,你得带个会英语的翻译)成机器语言,再由计算机进行指令的执行。

编程语言表现形式
c语言a=b+1;
汇编语言mov 0x804a01c, %eax
add $0x1, %eax
mov %eax, 0x804a018
机器语言a1 1c a0 04 08
83 c0 01
a3 18 a0 04 08

(6)目前有哪些高级编程语言呢?

        如:C/Java/Python/C#/JavaScript/PHP/Go/R/...

        世界编程语言排行榜:TIOBE Index - TIOBE


2、C语言概述

- 背景:C 语言最初是作为 Unix 系统的开发工具而发明的。

- 历史:

        1969年,美国贝尔实验室的 肯.汤姆森(Ken Thompson)和 丹尼斯.里奇(Dennis Ritchie) 一起开发了 Unix 操作系统,Unix系统是用 汇编语言 编写的,依赖于计算机的硬件。为了提高代码的 可读性 和 可移植性,决定使用高级编程语言实现,但是当时的高级编程语言无法满足需求,就在选定的 BCPL 语言的基础上发明了 B语言。

        1972年,丹尼斯.里奇再B语言的基础上重写设计,取代了B语言,就称为C语言。

        1973年,整个 Unix 系统就使用 C 语言重写(现在C语言主要的一个应用场景就是操作系统开发或者是嵌入式开发)。

        1988年,美国国家标准协会(ANSI)正式将 C 语言标准化,标志着C语言开始稳定和规划化,便于推广。


3、C语言特点 

(1)可移植性好,跨平台

        用C语言编写的代码可以在不同的操作系统或硬件平台上编译和运行。

(2)应用领域广

        - 操作系统开发:广泛应用于操作系统,如:Unix、Linux和Windows系统。

        - 嵌入式系统开发:用于单片机、微处理器或其他电子设备的开发。

        - 系统软件开发:很多的设备驱动程序、编译器、解释器等系统软件。

        - 网络通信:如Web服务器、网络通信协议等。

        - 游戏开发:C语言能实现与硬件的更直接交互。

        ...

(3)偏硬件的底层语言

        - C 语言可直接对接硬件,实现对内存管理、硬件操作和操作系统,是一种非常接近底层的语言,非常适合跟硬件交互。


4、C语言版本

A、版本1:K&R C

        C语言的初始版本,由于C语言还没有成文的语法标准,C语言的布莱恩.柯林(Brian Kernighan) 与 丹尼斯.里奇(Dennis Ritchie) 合作写了《C编程语言》这本书被当做是公认标准,而将其名字姓氏的首字母作为版本的简称:“K & R C”

B、版本2:C89 或 C90

        由于C语言语法简单,很多情况下描述非常模糊,加上C语言的快速发展;1989年,美国国家标准协会(ANSI)制定了C语言的标准,次年被国际标准化组织(ISO)通过,根据发布的年份,就被称为“C89” 或 “C90”。

C、版本3:C99

        1999年,对C语言的标准进行了一次大的修改,增加了很多大的语言特性,如:// 注释、可变长度的数组、内联函数和初始化设定项等,按照年份被称为“C99”,目前最流行的版本

D、版本4:C11

        2011年,ISO再次对C语言进行了修改,增加了 _Generic、static_assert 和原子类型限定符,按照年份被称为“C11”。    

E、版本5:C17

        在2017年对标准进行了修补,新版本知识解决了C11的一些缺陷,没有引入新功能。

F、版本6:C23

        2023年,增加了类型推导、匿名结构体、半角箭头等,并使用新的工具链:包括编译器和链接器,同时增加了一些C++语言的特性,以提高语言兼容性并构建现代C。

相关文章:

C语言入门-1.1 C语言概述

想要学好一门计算机编程语言,就和谈一个女朋友是一样的,需要对其深入了解。 1、计算机语言 (1)什么是计算机语言? 顾名思义,就是计算机之间交流的语言,就和人一样,咱们都是使用普通…...

周记之学习总结

你在人群中看到的每一个耀眼的女孩,都是踩着刀尖过来的。你如履平地般地舒适坦然,当然不配拥有任何光芒; 10.11-10.12 思来想去还是不舍得,搞了一下这个jwt,看了很多视频和博客,一直没看懂,两…...

程序设计:C++ 一个可以放入共享内存的string模板

共享内存由于是多进程共享的,里面的数据不适合包含指针,因为共享内存在不同进程里的地址并不相同。尽管可以在连接共享内存时指定连接地址,但是,这样做限制太多: 不同硬件、系统这个地址可能不一样,没有通…...

【EI会议征稿】第三届应用力学与先进材料国际学术会议(ICAMAM 2024)

第三届应用力学与先进材料国际学术会议(ICAMAM 2024) 2024 3rd International Conference on Applied Mechanics and Advanced Materials(ICAMAM 2024) 第三届应用力学与先进材料国际学术会议(ICAMAM 2024&#xff09…...

Python -- I/O编程

文章目录 一、文件读写1. 读文件2. 二进制文件3. 字符编码4. 写文件 二、StringIO和BytesIO三、操作文件和目录1. 操作系统命令2. 操作文件 四、序列化五、 JSON六、异步IO1. 协程2. asyncioasync/awaitaiohttp 一、文件读写 Python内置了读写文件的函数,用法和C是…...

langchain入门指南和实战

简单介绍 LangChain 是一个开源的语言模型集成框架,旨在简化使用大型语言模型(LLM)创建应用程序的过程。 利用它可以让开发者使用语言模型来实现各种复杂的任务,例如文本到图像的生成、文档问答、聊天机器人、 调用特定的SaaS服务…...

群晖synology DSM 7.2设置钉钉Webhooks通知

现在越来越多的小伙伴都有了自己的Nas系统,为了更加方便的接收Nas的消息,这篇文章带着大家一起配置一个钉钉(机器人)即时消息通知 首先登录钉钉的开放平台:开发者后台统一登录 - 钉钉统一身份认证 1.创建一个机器人&…...

STP生成树协议详解

一、STP作用 如果链路断开或节点故障,那么互联的设备就无法正常通信了,这类网络问题叫做单点故障。没有备份的链路或节点,出现故障会直接断网。如果要提供 724 小时不间断的服务,那就需要在网络中提前部署冗余。避免出现单点故障…...

CentOS 6/7/8 操作系统镜像下载

CentOS Mirrors List ​编辑 DownloadAbout About CentOS Frequently Asked Questions (FAQs) Special Interest Groups (SIGs) CentOS Variants Governance Community Contribute Forums Mailing Lists IRC Calendar & IRC Meeting List Planet Submit a Bug Stories Doc…...

中国社科院与美国杜兰大学金融管理硕士---不将就的人生

“万般皆下品,惟有读书高”、“书中自有颜如玉,书中自有黄金屋”,古往今来,读书的好处为人们所重视。从而想拿到学历没有知识的沉淀,没有一定的学识水平,又怎么能拿到含金量颇高的学历呢?退一步…...

教程更新 | 持续开源 RK3568驱动指南-驱动基础进阶篇

《iTOP-RK3568开发板驱动开发指南》手册文档更新,手册内容对应视频教程,后续资料会不断更新,不断完善,帮助用户快速入门,大大提升研发速度。 ✦ 第一篇 驱动基础 第1章 前言 第2章 你好!内核源码 第3章 …...

Jmeter测试关联接口

Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,本文主要介绍jmeter通过正则表达式提取器来实现接口关联的方式,可供参考。 一、实例场景: 有如下两个接口,通过正则表达式提取器,将第一…...

C++之基于Winsock2封装UDPServer与UDPClient

文章目录 Socket过程UDPServer.hUDPServer.cppUDPClient.hUDPClient.cppmain.cppCMakeLists.txt测试截图 Socket过程 UDPServer UDPClient UDPServer.h #ifndef UDPSERVER_H_INCLUDED #define UDPSERVER_H_INCLUDED#include <iostream> #include <string> #inclu…...

为什么说指针是c语言的灵魂?

为什么说指针是c语言的灵魂&#xff1f; 语言主要操作的对象是数据&#xff0c;c语言里面能够有大容量数据的地方就是指针指向的heap内存。从这 个角度来看&#xff0c;确实指针就是数据的灵魂。最近很多小伙伴找我&#xff0c;说想要一些c语言资料&#xff0c;然后我根据自己…...

性能测试jmeter命令行运行+html测试报告解读

windows下打开jmeter的运行窗口&#xff0c;可以看到提示不要用GUI模式进行负载测试&#xff0c;如果要用负载测试&#xff0c;用cli模式&#xff0c;因为GUI模式运行jmeter比较消耗性能。 命令行模式 windows下找到jemeter所在文件夹&#xff0c;打开cmd输入命令。 jmeter -n…...

Service Mesh和Kubernetes:加强微服务的通信与安全性

文章目录 什么是Service Mesh&#xff1f;Service Mesh的优势1. 流量控制2. 安全性3. 可观测性 Istio&#xff1a;Service Mesh的领军者流量管理安全性可观测性 Linkerd&#xff1a;轻量级Service Mesh流量管理安全性可观测性 Istio vs. Linkerd实际应用结论 &#x1f388;个人…...

『吴秋霖赠书活动 | 第三期』《Python asyncio并发编程》

文章目录 1. 写在前面2. 浅谈asyncio3. Python asyncio并发编程 不再受限于&#xff01;asyncio异步让你的程序在高并发时翱翔自如&#xff01; 声明&#xff1a;赠书活动是博主与出版社达成合作&#xff0c;只属于粉丝的专属福利 本期书籍&#xff1a;《Python asyncio并发编程…...

数字孪生在工厂领域的应用和优势

工厂运营一直以来都是高度复杂且信息密集的任务。然而&#xff0c;随着数字孪生技术的出现&#xff0c;工厂领域正在经历一场前所未有的革命。本文将介绍数字孪生在工厂领域的应用&#xff0c;以及它如何重新定义了制造业的运营方式。 什么是数字孪生&#xff1f; 数字孪生是…...

如何写代码实现VRP问题中车辆容量限制及时间窗要求(python)

问题研究背景 使用遗传模拟退火算法求解如下10个卸货点的VRPTW问题。为了使研究的问题更加有意义&#xff0c;本人将时间限理解为服务点一天的具体可以允许配送的时间。 如果不要求车辆从配送中心出发的时间是统一的并且为0时刻&#xff0c;那么就默认第一个配送节点是一定能赶…...

C语言求解汉诺塔问题

完整代码&#xff1a; /*Hanoi(汉诺)塔问题。这是一个古典的数学问题&#xff1a;古代有一个梵塔&#xff0c;塔内有 3 个 座 A&#xff0c;B&#xff0c;C&#xff0c;开始时 A 座上有 64 个盘子&#xff0c;盘子大小不等&#xff0c;大的在下&#xff0c;小的在上。有一个老…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...