C语言入门(什么是C语言,C语言的编程机制以及一些基础计算机概念)

news2024/11/24 2:25:27

目录

一.什么是C语言

1.面向对象:

2.面向过程:

二.C语言特点

三.C语言开发时间

四.环境搭建

1.代码编辑器

2.C编译器

五.C语言标准

六.计算机补充知识

1.计算机构成

2.CPU工作

3.编译器

七.编写程序步骤

八.源文件,目标文件,可执行文件


一.什么是C语言

C语言和python,java这类语言一样都是高级语言。或许你听过C++语言,其实C++语言和其他非常多语言(python,perl,fortran…)一样都是基于C语言开发出来的。但C++和C在很多方面都有很多共同之处,唯一一个很大的区别就在于C++是一门面向对象编程(对语言建模来适应问题),而C面向过程的编程为中心的编程。这里重点介绍下面向对象编程和面向过程编程

1.面向对象

1.编程思维:

分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次

调用

2.生活思维:

早上上学,我们要经历“起床”,“刷牙”,“吃早饭”…“坐车到学校”这些事件(函数)就可以理解为了完成早上上学这个任务所需要经过的过程

2.面向过程

1.编程思维:

把构成问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。

2.生活思维:

早上上学,我们的关注点不在是起床”,“刷牙”,“吃早饭”…“坐车到学校”这些事件,而是构建起这些事件的你的针对这些事情的状态,行为等等

二.C语言特点

时C语言相较于其他语言拥有非常高的高效性,灵活性和可移植性,比如,C语言具有汇编语言才具有的微调控制能力。以及高移植性,这点我们在后面学习到位操作的时候会有很深的感受

而C语言的设计特性则为:自顶向下的规划,机构化编程,模块化设计

三.C语言开发时间

C语言开发时间为1972年,由贝尔实验室的丹尼尔.里奇肯.汤普逊(B语言开发者,B语言其实就是C语言的“父辈”)发明

四.环境搭建

1.代码编辑器

因为C语言与UNIX关系密切,在加上Linux和UNIX关系又密切,所以在使用Linux使用C语言编程,一般不需要专门在配置,直接使用 gcc 需要编译的文件 就可以了

而在windows当中使用C语言搭配环境则是十分麻烦,一般我个人比较推荐使用visual Studio,而VS Code 环境搭建我把别的大佬教程链接放这了,大家跟着做就好了,如果还有问题可以私信我

visual studio配置学习教程

记住不是左边蓝色那个,蓝色那个是visual Studio code(简称VS code),右边那个紫色的才是visual Studio。大家下载的时候自己注意一点。

两个的应用交会有很多,但还是有各自的侧重面,大家可以根据自己的情况选择使用

比较大的区别可能就在于

VS Code主要是写前端代码的工具,visual Studio主要是写后端代码的工具

跨平台能力不一样,VS Code是可以跨平台编译的

VS Code使用起来比较简单,所以这也就导致其功能没visual Studio完善

2.C编译器

这里重点介绍下GUN编译器。GUN项目始于1987年,是一个开发大量自由UNIX软件的季候。GUN编译器集合也称GCC。GCC有各种版本来适应不同的硬件平台和操作系统,包括UNIX,Linux和windows。用gcc命令便可调用GCC C编译器。许多使用gcc的系统也爱用cc作为gcc的别名(LINUX使用是GUN提供的GCC公用域C编译器)

在运行可执行文件时候也可以选择使用不同C标准

gcc -std=c99 a.out

gcc -std=c1x a.out #这里调用GCC接受C11之前的草案标准

gcc -std=c11 a.out

而在windows当中需要自己去下载C编译器,一般常用的就是Cgwin和MinGW,大家在配置windows环境时一般用的还是MinGW多点。使用VS Code的时候需要下载MinGW,配置环境的过程会比较麻烦,可自行去尝试,visual studin会好很多,系统会根据你的开发需求,直接下好相应软件帮助你把环境配置好,所以动手能力不太好的朋友,建议还是直接用visual studin会比较好

而目前我在windows上面用的 vs code 和 visual studin属于IDE(windows下的集成开发环境),它包含了很多语言的编译器

   

五.C语言标准

ANSI C:于1989年ANSI(美国国家标准协会)委员会X3J11发布,该标准与1990年被国际标准化组织采用,命名为ISO C(注意ANSI C和ISO C 是两个完全相同的标准)ANSI C也名C89(因为ANSI C 于 1989年公布)或C90(因为ISO C 于1990公布)

C99,C11:后期ANSI/ISO联合委员会(C9X委员会)也与1994年发布C99标准和2011年的C11标准        而还有K&RC标准,K&RC 和 ANSI C的标准各有不同,现在用的比较多的还是ANSI C。相同的程序,不同的标准,最终的效果可能都是不一样的。                                                                                          

六.计算机补充知识

1.计算机构成

中央处理单元(CPU):承担绝大部分的运算工作(主要由运算器(ALU)控制器(CU)两大部分组成)

随机存储内存(RAM):存储程序和文件的工作区

永久内存存储设备:存储文件,即使关闭计算机后,也不会丢失之前存储的程序和文件(一般主要有机械硬盘,固态硬盘)

外围设备:键盘,鼠标,显示屏等

而现在一般还有一个GPU(图像处理器),主要是负责图像的处理

2.CPU工作

CPU有一个自己的小工作区--由若干个寄存器组成,每个寄存器都可以存储一个数字(存储着下一条指令的内存地址),CPU使用该地址来获取和更新下一条指令。在获取指令后,CPU在另一个寄存器中存储该指令,并更新第一个寄存器存储下一条指令的地址

存储在计算机中的所有内容都是数字,计算机以数字形式存储数字和字符。计算机程序最终必须以数字指令码(机器语言)来表示。一般在计算机编程当中你最常会听到三种编程语言的统称,机器语言,汇编语言,高级语言。

机器语言:这个可以理解为计算机能理解的语言,只有1和0

汇编语言:也叫符号语言或低级语言,这是一个非常难学习但也非常厉害的语言,汇编语言一般用于直接与电脑硬件操作,有兴趣的同学可以自行了解

高级语言:就是像C,C++,python…等等,因为方便学习所以现在主流的编程语言都是高级语言,高级语言计算机是看不懂的,所以需要编译器将高级语言翻译成机器语言给电脑看

3.编译器

编译器是把高级语言程序翻译成计算机能理解的机器语言指令集的程序

编译器的出现让程序员在编写C语言时可以更好的进行高级思维活动,而编译器则负责处理

七.编写程序步骤

 第一步:程序目标

这个就很简单了就是要明白自己要做什么,同时思考设计这样的程序应该如何去做

第二步:设计程序

这里的设计一般还是让你用语言去描述设计思路,并不是直接就上手去打了

比如我们要把输入的数据打印到屏幕,用伪代码方式表达

scanf()函数接受我们输入的数据并存入到相应的变量当中

printf()函数将变量存储的数据打印到屏幕

第三步:编写代码

这一步就是实实在在编写C语言的代码了

第四步:编译

这一步并不用你来做,用编译器将源代码装换成可执行代码。

详细来说就是由编译器先将源代码文件转化为目标代码(此时源代码转换为机器语言代码),目标文件后缀为.obj,此时目标文件还需要通过链接器将目标文件的库代码引入,以及加入对应的启动代码,最终变为可执行代码,后缀为.exe。编译时候.obj的目标文件你一般看不见,因为系统生产可执行文件后会自动删除

这一块你稍微了解一下,随着学习深入你会慢慢明白的

第五步:运行程序

在图像界面的就按照对应软件的启动运行就好了,像linux这种命令行界面 gcc 可执行文件名 先编译在./可执行文件名就好了。windows终端 .\可执行文件名 也可以正常运行,一般LINUX编译完的可执行文件名为a.out,后面编译的文件会覆盖a.out的内容

第六步:调试程序

这里也就是找语法和语义上面的bug了

第七步:维护和修改代码

这个如果你以后进入公司,这一块也会成为你工作的一部分,现在嘛,写好的代码保存好,以后慢慢欣赏

八.源文件,目标文件,可执行文件

在讨论这些文件之前,我们必须了解一点,hello.c

.之前的hello叫基本名 .之后的c叫做扩展名

而一般C文件源文件扩展名为c。目标文件为obj(也可能是其他扩展名,不固定)。可执行文件为exe(这个大家应该都比较熟悉了,因为我们一般用的软件都是exe后缀的)

一般在编译的时候,源代码文件将转换为可执行文件,而整个执行过程包含编译链接这两个过程。

首先,编译器把源代码转换成目标文件,然后链接器将目标文件和库代码(定义类似printf,scanf这类函数的头文件)和启动代码(启动代码就是程序和操作系统之间的接口)进行合并,最后变为可执行文件。

这里需要知道一点,源代码文件(c为后缀)其实是文本文件,不是字处理器文件(包含一些文字的字体和格式信息,一般以.txt为后缀)。大家才存储的时候记得一定要以.c为后缀。

这里还需要特别说下,unix和linux当中编译后的目标文件均为a.out,直接在当前文件夹输入文件名即可运行,如果想要保存这个目标文件,需要进行改名,不然下一次运行gcc编译后,会把这个目标文件进行覆盖。


好了朋友们我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~

如果朋友你感觉文章的内容对你有帮助,可以点赞关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈

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

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

相关文章

SpringBoot 三大开发工具,你都用过么?

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…

Sentinel服务熔断功能(sentinel整合ribbon+openFeign+fallback)

目录 1、Sentinel服务熔断功能 一、Ribbon系列 (一)提供者9003/9004 (二)消费者84 二、OpenFeign系列 三、熔断框架比较 2、规则持久化 1、Sentinel服务熔断功能 一、Ribbon系列 (一)提供者9003/9004 …

DAMA数据管理知识体系指南之元数据管理

第11章 元数据管理 11.1简介 按照通常的说法,元数据的定义是“关于数据的数据”,但是其确切含义是什么?元数据与数据的关系就像数据与自然界的关系。数据反映了真实世界的交易、事件、对象和关系,而元数据则反映了数据的交易、事…

技术分享|终端安全防护|ChatGPT会创造出超级恶意软件吗?

ChatGPT是一个强大的人工智能聊天机器人,它使用大量的数据收集和自然语言处理与用户“交谈”,感觉像是和正常的人类对话。它的易用性和相对较高的准确性让用户可以利用它做任何事情,从解决复杂的数学问题,到写论文,创建…

【Linux】操作系统与进程的概念

目录 冯诺依曼体系 注意 为什么CPU不直接访问输入或输出设备? 跨主机间数据的传递 操作系统 管理 进程 描述进程 进程的查看和终止 bash 通过系统调用创建子进程 fork的辨析 冯诺依曼体系 🥖冯诺依曼结构也称普林斯顿结构,是一种将…

(超详细)Navicat的安装和激活,亲测有效

步骤一:准备安装包 下载Navicat,我用的v15最好一致(私信可以发你安装包和注册码)步骤二:关闭杀毒软件,然后需要断掉网络(一定断网) 步骤三:一路next安装,安装…

nodejs如何实现Digest摘要认证?

文章目录1.前言2. 原理3. 过程4. node实现摘要认证5. 前端如何Digest摘要登录认证(下面是海康的设备代码)1.前言 根据项目需求,海康设备ISAPI协议需要摘要认证,那么什么是摘要认证?估计不少搞到几年的前端连摘要认证都…

每日一个解决问题:事务无法回滚是什么原因?

今天在码代码时发现事务不回滚了,学过MySQL 事务小伙伴们都懂,通过 begin 开启事务,通过 commit 提交事务或者通过 rollback 回滚事务。 正常来说,当我们开启一个事务之后,需要 commit 或者 rollback 来结束一个事务的…

下面这段Python代码执行后的输出结果是?

点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤几行归塞尽,念尔独何之。大家好,我是皮皮。一、前言前几天在Python青铜交流群【桐霄L】问了一个Python基础的问题,这里拿出…

TortoiseGit 使用教程

一、下载工具 这里给大家准备了所有安装包自取 链接:https://pan.baidu.com/s/1xrxxgyNXNQEGD_RjwKnPMg 提取码:qwer 也可在官网自行下载最新版 1.下载git,直接去官网下载Git - Downloads,根据自己的系统合理下载&#xff0c…

openGauss客户端安装

目录1. 准备两台Linux系统2. 安装openGauss客户端3. 设置客户端主机环境变量4. 修改服务端配置文件5. 测试客户端远程连接客户端环境:openEuler release 22.03 (LTS-SP1) 服务端环境: openEuler release 20.03 (LTS-SP3) openEuler系统官网下载 1. 准备两台Linux系…

尚医通(十)数据字典加Redis缓存 | MongoDB

目录一、Redis介绍二、数据字典模块添加Redis缓存1、service_cmn模块,添加redis依赖2、service_cmn模块,添加Redis配置类3、在service_cmn模块,配置文件添加redis配置4、通过注解添加redis缓存5、查询数据字典列表添加Redis缓存6、bug&#x…

[oeasy]python0080_设置RGB颜色_24bit_24位真彩色_颜色设置

RGB颜色 回忆上次内容 上次 首先了解了 索引颜色 \33[38;5;XXXm 设置 前景为索引色\33[48;5;XXXm 设置 背景为索引色 RGB每种颜色 可选0-5总共 6 级 想用 精确RGB值 真实地 大红色画个 大红桃心 ♥️ 有可能吗??🤔 rgb 模式 关于 RGB 模式…

07- 梯度下降优化(Lasso/Ridge/ElasticNet) (机器学习)

归一化: 减少数据不同数量级对预测的影响, 主要是将数据不同属性的数据都降到一个数量级。 最大值最小值归一化:优点是可以把所有数值归一到 0~1 之间,缺点受离群值影响较大。0-均值标准化: 经过处理的数据符合标准正态分布,即均值为0,标准差…

Android 逆向工具大整理,碉堡了

文章目录jadx打开 gui 界面把安装包打开双击变量名和方法名可以高亮所有出现的地方**强大的搜索功能****搜索资源****查看 APK 签名****查看 APK dex 数,方法数****查看资源,配置清单****展开包名**查找方式引用反混淆导出 Gradle 工程导出反编译资源cla…

腾讯云安全组配置参考版

官方文档参考: 云服务器 安全组应用案例-操作指南-文档中心-腾讯云 新建安全组时,您可以选择腾讯云为您提供的两种安全组模板: 放通全部端口模板:将会放通所有出入站流量。放通常用端口模板:将会放通 TCP 22端口(Lin…

JDBC(老版)

文章目录JDBC概述数据持久化Java中的数据存储技术JDBC介绍JDBC体系结构JDBC程序编写步骤获取数据库连接要素一:Driver接口实现类Driver接口介绍加载与注册JDBC驱动要素二:URL要素三:用户名和密码数据库连接方式举例使用PreparedStatement实现…

元学习方法解决CDFSL以及两篇SOTA论文讲解

来源:投稿 作者:橡皮 编辑:学姐 带你学习跨域小样本系列1-简介篇 跨域小样本系列2-常用数据集与任务设定详解 跨域小样本系列3:元学习方法解决CDFSL以及两篇SOTA论文讲解(本篇) 跨域小样本系列4&#xf…

Lesson 6.5 机器学习调参基础理论与网格搜索

文章目录一、机器学习调参理论基础1. 机器学习调参目标及基本方法2. 基于网格搜索的超参数的调整方法2.1 参数空间2.2 交叉验证与评估指标二、基于 Scikit-Learn 的网格搜索调参1. sklearn 中网格搜索的基本说明2. sklearn 中 GridSearchCV 的参数解释3. sklearn 中 GridSearch…

漏洞扫描器之AWVS

数据来源 01 漏洞扫描器及AWVS介绍 》漏洞扫描 》常见漏洞扫描工具 网络上公布的付费的或者免费的漏洞扫描工具、脚本多种多样。 √ 针对某类漏洞的:sql注入(sqlmap)、weblogic(weblogicscan) √ 针对某类CMS的: wordpress( wpscan)、 …