C语言之编程基础

article/2025/8/27 19:40:32

学自C语言中文网

编程基础

  • 一.编程语言
  • 二. C语言的地位
  • 三.C语言是菜鸟和大神的分水岭
  • 三.C语言和C++的关系
  • 四.数据在内存中的存储
  • 五.载入内存,让程序运行起来
  • 六.虚拟内存
  • 七. ASCII编码

一.编程语言

  1. 通过使用某种“语言”的固定格式和固定词汇来控制计算机的行为, 而这个语言就是编程语言(Programming Language) .

在这里插入图片描述

  1. 编程语言类似于人类语言,由直观的词汇组成,我们很容易就能理解它的意思.
    C语言中,我们使用 puts 这个词让计算机在屏幕上显示出文字;puts 是 output string(输出字符串)的缩写。
puts("C语言中文网");

固定格式: 内容在引号之间, 命令结尾要有分号

  1. 一个C语言的完整例子
    C语言(C Language)是编程语言的一种,学习C语言,主要是学习它的格式和词汇。
#include <stdio.h>
int main()
{puts("Hello World!");return 0;
}

在这里插入图片描述
这些具有特定含义的词汇、语句,按照特定的格式组织在一起,就构成了源代码(Source Code),也称源码或代码(Code)。
这些具有特定含义的词汇、语句,按照特定的格式组织在一起,就构成了源代码(Source Code),也称源码或代码(Code)。
4. 编程语言的发展:

汇编语言 --> 面向过程编程 --> 面向对象编程

二. C语言的地位

  • 对于大部分程序员,C语言是学习编程的第一门语言,很少有不了解C的程序员。

  • C语言除了能让你了解编程的相关概念,带你走进编程的大门,还能让你明白程序的运行原理,比如,计算机的各个部件是如何交互的,程序在内存中是一种怎样的状态,操作系统和用户程序之间有着怎样的“爱恨情仇”,这些底层知识决定了你的发展高度,也决定了你的职业生涯。

  • C语言概念少,词汇少,包含了基本的编程元素,后来的很多语言(C++、Java等)都参考了C语言,说C语言是现代编程语言的开山鼻祖毫不夸张,它改变了编程世界。C语言涉及到的编程概念少,附带的标准库小,所以整体比较简洁,容易学习,非常适合初学者入门。

  • C语言也不是没有缺点,毕竟是70后老人,有点落后时代,开发效率较低,后来人们又在C语言的基础上增加了面向对象的机制,形成了一门新的语言,称为C++.

  • C语言是计算机产业的核心语言, 软件行业的很多细分学科都是基于C语言的,学习数据结构、算法、操作系统、编译原理等都离不开C语言,所以大学将C语言作为一门公共课程,计算机相关专业的同学都要学习。

  • C语言在计算机产业大爆发阶段被万人膜拜,无疑会成为整个软件产业的基础,拥有核心地位。

  • C语言被誉为“上帝语言”,它不但奠定了软件产业的基础,还创造了很多其它语言

三.C语言是菜鸟和大神的分水岭

  • 所有程序都在拼命节省内存,提高内存使用效率,计算机的整个发展过程都在围绕内存打转,不断地优化内存布局,以保证可以同时运行多个程序。
    内存就是内存条(如下)
    在这里插入图片描述

  • 进程和线程的存在就是为了更加高效的利用内存.

  • 从C语言到内存,从内存到进程和线程,环环相扣:不学C语言就吃不透内存,不学内存就吃不透进程和线程。

三.C语言和C++的关系

  • C++ 主要在C语言的基础上增加了面向对象和泛型的机制,提高了开发效率,以适用于大中型软件的编写。
  • C、C++代码都会通过同一个编译器来编译,很难说C++是一门独立的语言,还是对C的扩展。
  • C++支持面向过程编程、面向对象编程和泛型编程,而C语言仅支持面向过程编程。就面向过程编程而言,C++和C几乎是一样的,所以学习了C语言,也就学习了C++的一半,不需要从头再来。

四.数据在内存中的存储

  • 对于计算机来说,所有信息在内存中都是一样的,都是以二进制的形式来表示。
  • 0V对应0, 5V对应1;
  • 通过电路来控制这些元器件的通断电,会得到很多0、1的组合。例如,8个元器件有 28=256 种不同的组合,16个元器件有 216=65536 种不同的组合。
  • 8个元器件看做一个单位,即使表示很小的数,例如 1,也需要8个,也就是 00000001。
  • 1个元器件称为1比特(Bit)或1位,8个元器件称为1字节(Byte),那么16个元器件就是2Byte,32个就是4Byte,以此类推:
    8×1024个元器件就是1024Byte,简写为1KB;
    8×1024×1024个元器件就是1024KB,简写为1MB;
    8×1024×1024×1024个元器件就是1024MB,简写为1GB。
  • 单位换算
    1Byte = 8 Bit
    1KB = 1024Byte = 210 Byte
    1MB = 1024KB = 220Byte
    1GB = 1024MB = 230Byte
    1TB = 1024GB = 240Byte
    1PB = 1024TB = 250Byte
    1EB = 1024PB = 260Byte

五.载入内存,让程序运行起来

  • 软件安装在硬盘中, 运行软件时, 从硬盘中将对相应的数据复制到内存, 软件是在内存中运行的. 因为内存的读写速度比硬盘快很多.
  • 读写速度: 内存 > 固态硬盘 > 机械硬盘。
  • 管是运行QQ还是编辑Word文档,都是先将硬盘上的数据复制到内存,才能让CPU来处理,这个过程就叫作载入内存(Load into Memory)。完成这个过程需要一个特殊的程序(软件),这个程序就叫做加载器(Loader)。
  • CPU直接与内存打交道,它会读取内存中的数据进行处理,并将结果保存到内存。如果需要保存到硬盘,才会将内存中的数据复制到硬盘。
  • CPU直接从内存中读取数据,处理完成后将结果再写入内存。
    在这里插入图片描述

六.虚拟内存

  • 实际运行的程序占用的空间大于内存空间, 操作系统(OS)会将内存中暂时不用的数据写回硬盘, 需要时在从硬盘读取, 并将另一部分不用的数据写入硬盘. 所以硬盘中用来存放内存中暂时不用的数据的空间, 就叫虚拟内存.
  • 这也引发了一个问题: 反复交换硬盘和内存中的数据会消耗很多时间,所以如果内存太小,会严重影响计算机的运行速度,甚至会出现”卡死“现象, 即使cpu很好也没多少作用.

七. ASCII编码

  • ASCII 是“American Standard Code for Information Interchange”的缩写,翻译过来是“美国信息交换标准代码”。

  • 字符集为每个字符分配一个唯一的编号,类似于学生的学号,通过编号就能够找到对应的字符。

  • 字符集包含了所有字符和对应的二进制.
    ASCII 编码一览表

  • 将中文存储到计算机

  • Unicode字符集: 各个国家为了自己的语言文化开发的,不具有通用性,在一种编码下开发的软件或者编写的文档,拿到另一种编码下就会失效. 于是, Unicode 诞生了。Unicode 也称为统一码、万国码.

在这里插入图片描述


http://chatgpt.dhexx.cn/article/Q6PEqUAX.shtml

相关文章

matlab中的graythresh函数的实例

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

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

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

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

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

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

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

基于Matlab车牌自动识别

灰度变换 灰度图是指将黑色和白色以对数的关系分为256阶的图像。灰度化处理就是将彩色图片通过处理转化为灰度图的过程。彩色图像一般由三个独立色组成&#xff0c;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进行图像处理时&#xff0c;经常会遇到设置一个阈值将灰度图处理为二值图的情况。 一般都会这样子 Iimread(1.jpg); levelgraythresh(I); BWim2bw(I,level); 这里就有一个小坑了 比如1.jpg这个读入的图片&#xff0c;每一个像素位置的灰度都是整型。但是你强行转成了…

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

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

graythresh

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

软件测试题目

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

软件测试题1

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

软件测试题

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

软件测试期末考试题

一、单项选择题&#xff08;每小题2分&#xff0c;共21530分&#xff09; 1、软件测试的目的&#xff08; C&#xff09; A&#xff0e;避免软件开发中出现的错误 B&#xff0e;发现软件开发中出现的错误 C&#xff0e;尽可能早地发现并排除软件中潜藏的错误&#xff0c;提高软…

100道软件测试练习题,看看你能有多少分

软件测试与质量保证-软件测试部分练习题 1单选(2分) 软件测试用例主要由输入数据和_________两部分组成。 A.预期输出结果2.00/2.00 B.测试计划 C.以往测试记录分析 D.测试规则 2单选(2分) 与设计测试用例无关的文档是_________。 A.项目开发计划2.00/2.00 B.源程序 …

杨辉三角python小代码

刚刚上机课&#xff0c;老师居然让我们打印杨辉三角&#xff1f;&#xff1f; 结果 def yangHuiSanJiao(n):#打印第一行和第二行print("1".center(50))next_line [1,1]second_line .join([str(i) for i in next_line])print(second_line.center(50))for i in rang…

【5分钟力扣】118.杨辉三角 python

文章目录 一、题目二、解题思路三、三种解题示例 一、题目 给定一个非负整数 numRows&#xff0c;生成杨辉三角的前 numRows 行。 在杨辉三角中&#xff0c;每个数是它左上方和右上方的数的和。 示例: 输入: 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1] ]二、解题思…

蓝桥杯-杨辉三角形-python

题目 可以结合目录来理解文章~ 原始方法 这个方法可以拿到40分。N数值比较大的时候&#xff0c;运行时间会超过限制。 思路 逐行生成杨辉三角&#xff0c;找到了需要的N以后就停止循环&#xff0c;并输出对应的位置。 变量解释 用于计算N的位置的公式如下&#xff1a; po…

第十二届蓝桥杯 杨辉三角形 Python题解 满分

原地址https://artrajz.cn/index.php/archives/32/ 前言 其实道题在寒假的时候就做了&#xff0c;现在有机会发出来了。(〃‘▽’〃) 题目 思路 参考了大佬斜行查找的思路&#xff0c;为了便于观察和叙述&#xff0c;我把杨辉三角形如图排一下 1 1 1 1 2 1 1 3 3 …

python杨辉三角居中_利用python打印杨辉三角

用python打印杨辉三角 介绍 杨辉三角&#xff0c;是初高中时候的一个数列&#xff0c;其核心思想就是说生成一个数列&#xff0c;该数列中的每一个元素&#xff0c;都是之前一个数列中&#xff0c;同样位置的元素和前一个元素的和。 正好在python中&#xff0c;也就是生成一…