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

article/2025/8/27 19:49:00

目录

一.什么是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://chatgpt.dhexx.cn/article/k9w7bR3R.shtml

相关文章

C语言 09.文件

读写文件与printf、scanf关联 printf – 屏幕 – 标准输出 scanf – 键盘 – 标准输入 perror – 屏幕 – 标准错误 系统文件:(打开和关闭由系统自动执行) 标准输入 – stdin – 0 一旦关闭了,scanf就不可以使用 标准输出 – s…

C语言完整知识体系总结

C语言的知识体系总结 这里写目录标题 C语言的知识体系总结序言:C语言的概述历史、特点、标准)1、嵌入式开发为什么选择C语言?(面试题!)2、为什么内核开发选择C语言?3、C语言的缺点:a…

【C语言篇】初识C语言

友情链接:C/C系列系统学习目录 知识总结顺序参考C Primer Plus(第六版)和谭浩强老师的C程序设计(第五版)等,内容以书中为标准,同时参考其它各类书籍以及优质文章,以至减少知识点上的…

C语言学习笔记 1

中央处理器(CPU): 包括运算器、控制器、寄存器 Enum: Enum: 枚举类型 System函数: 执行系统命令。如pause、cmd、calc、mspaint、notepad..... System(“pause”);//暂停 System(“calc”);//打开计算机 System(“cls”);//…

C语言:文件操作

标题 文件什么是文件: 文件指针文件缓冲区操作文件1.文件的打开与关闭函数2.文本行输入输出函数3.格式化输入输出函数(有格式的数据输入到文件中)4.二进制输入输出调整文件指针位置6.ftell与rewind7.文件结束的判定 程序退出,内存…

c语言字节写入文件,C语言文件操作

所谓文件(file)一般指存储在外部介质上数据的集合,比如我们经常使用的mp3、mp4、txt、bmp、jpg、exe、rmvb等等。这些文件各有各的用途,我们通常将它们存放在磁盘或者可移动盘等介质中。那么,为什么这里面又有这么多种格式的文件呢?原因很简单,它们各有各的用途,区分就在…

C语言之编程基础

学自C语言中文网 编程基础 一.编程语言二. C语言的地位三.C语言是菜鸟和大神的分水岭三.C语言和C的关系四.数据在内存中的存储五.载入内存,让程序运行起来六.虚拟内存七. ASCII编码 一.编程语言 通过使用某种“语言”的固定格式和固定词汇来控制计算机的行为, 而这…

matlab中的graythresh函数的实例

一个图足以说明所有问题,代码实例加输出结果,说明一个问题,graythresh()函数还是很不错的! 如果还想跟精确,就在该阈值的周围在试几组数组,找到自己觉得最优的阈值

基于MATLAB的数字图像分割的研究与实现

1 绪论 1.1 图像分割的研究背景 在一幅目标图像下,人们往往只是关注其中的一个或者几个目标,而这些目标必然会占据一定的区域,并且与周围其他目标或背景在一些特征上会有相应的差别。但是,很多时候这些差别会非常的细微&#xff0…

一天一个小技巧(4)——利用Python和MATLAB进行图片二值化

转载请注明作者和出处:https://blog.csdn.net/qq_28810395 Python版本: Python3.x 运行平台: Windows 10 IDE: Pycharm profession 2019 Matlab2010a 一、前言 由于在一些软件和处理上都仅要求是黑白图片,那么掌握一种…

matlab nlfilter 填充方式,MatLab实验步骤(超杰版)

图像变换--灰度调整、滤波增强---二值化(阈值分割)--形态学处理--特征提取 一:色彩变换,从颜色上控制思考怎样应用灰度的变换、滤波变换减少地物 直方图均衡化histeq自适应均衡化adapthisteq灰度调节(灰度映射)imadjust【直接变换、非线性变换、灰度映射…

基于Matlab车牌自动识别

灰度变换 灰度图是指将黑色和白色以对数的关系分为256阶的图像。灰度化处理就是将彩色图片通过处理转化为灰度图的过程。彩色图像一般由三个独立色组成,R、G、B三个分量分别显示出红、绿、蓝。灰度化处理就是使R、G、B三个分量相等。灰度值为255的点就是白色&#x…

【MATLAB Image Processing Toolbox 入门教程七】“导入、导出和转换”之“图像类型转换Ⅱ——使用阈值法转换为二值图像”

【MATLAB Image Processing Toolbox 入门教程七】 1 imbinarize函数1.1 imbinarize函数使用语法及说明1.2 imbinarize函数参数说明1.3 imbinarize函数使用示例1.3.1 使用全局阈值和局部自适应阈值对图像二值化1.3.2 检测前景比背景暗的图像 2 graythresh函数3 otsuthresh函数4 …

matlab graythresh3,Matlab—影像分析进阶

在这篇文章里面我们要做的事情全部都围绕两个问题,一个图像当中有多少个 xxx,他们的大小是多少,举个例子 上图是一个米的影像,这张图片里有很多的米,现在我们的问题是,这里面有多少米,他们的大小是多少? graythresh() & im2bw() 要回答上述两个问题,首先要做的是对…

matlab graythresh()函数使用的注意点

用matlab进行图像处理时,经常会遇到设置一个阈值将灰度图处理为二值图的情况。 一般都会这样子 Iimread(1.jpg); levelgraythresh(I); BWim2bw(I,level); 这里就有一个小坑了 比如1.jpg这个读入的图片,每一个像素位置的灰度都是整型。但是你强行转成了…

2.23学习心得 Matlab graythresh函数 形态学开闭操作,腐蚀膨胀的作用

关于graythresh 函数 函数功能:使用 最大类间方差法找到图片的一个合适的阈值(threshold)。在使用 im2bw函数将灰度图像转换为二值图像时,需要设定一个阈值,这个函数可以帮助我们获得一个合适的阈值。利用这个阈值通常…

graythresh

使用Otsu方法计算全局图像阈值 语法: T graythresh(I) [T,EM] graythresh(I)说明: T graythresh(I) 使用 Otsu 方法 , 根据灰度图像 I 计算全局阈值 T。Otsu 方法选择一个阈值,使阈值化的 黑白像素的类内方差最小化。全局阈值…

软件测试题目

单项选择题:共20小题,每小题1 分,满分20分;请将答案填入题后括号中。 1. 在软件生命周期的哪一个阶段,软件缺陷修复费用最低 ( A ) (A&#xff…

软件测试题1

单选题 1、系统测试使用(C)技术, 主要测试被测应用的高级互操作性需求, 而无需考虑被测试应用的内部结构。 A、 单元测试 B、 集成测试 C、 黑盒测试 D、白盒测试 2、单元测试主要的测试技术不包括(B ) A、白…

软件测试题

以题会题 一、单选题 1、对软件进行测试的根本目的是什么?( C ) A、提高软件的质量 B、确保程序符合用户的需求 C、找出程序中的缺陷 D、确保程序没有缺陷 2、在软件生命周期哪个阶段,软件缺陷修复费用最低?&#xf…