Linux C语言

一、基础知识

(一)冯诺依曼体系

1、存储器:内存

存储程序的思想:按照存储器中指令的顺序

2、存储器的分类

1)主存:内存(C盘)

2)外存

3)寄存器是cpu内部的高速存储器,数目少,速度快,cache在cpu内部,外存和内存(主存)都在CPU外。

3、程序

广义:为了实现一个功能设计的工作步骤

程序:系统可以识别的一组有序指令(二进制),存储在磁盘(硬盘属于外存)上,只有在执行的时候才加载到内存。

(二)数值表示

1、数值数据:能够进行数值运算得出确切数值

非数值数据:不能进行数值运算得出确切数值

 字符数据通过ASCII码转化成二进制编码

2、二进制、八进制、十进制、十六进制

1)十六机制:数码123456789abcdef

2)十六进制前缀0x

3、原码、反码、补码

1)正数的原码、补码、反码等于他本身

2)负数的原码符号位是1,其余位不变

负数的补码的符号位是1,其余位按位取反

负数的反码符号位是1,其余位按位取反,末尾加一

(三)程序的编译和调试

1、GCC编译器

2、编译文件是否正确

1)gcc test.c -o test编译是否正确

2)gcc test.c -o test -Wall:如果语法有不规范的,作为一个展示

3)./test执行一个文件

3、程序调试

 %s    __FILE__ 显示文件名

 %s   __FUNCTION__ main函数

 %d   __LINE__显示行

5、一个程序包括数据结构和算法

二、C语言数据类型

(一)bool类型

1、bool:非零(true),零(false)

2、需要引入头文件

#include<stdbool.h>

3、举例

 

4、由于bool使用频率高,所以去除头文件,加上_Bool这样一个数据类型

5、用数据类型_Bool,则变量只能赋值数据,不能赋值true/false

如果需要true/false就要用带宏的形式的头文件

#define 1 true

(二)char类型

 字符型数据是不具有计算能力的文字数据类型

ch用%d来打印字符对应的ASCII码,用%c来打印字符。

(三)整型

(四)浮点型

float:%f

double:%lf

 (五)强制类型转换

强制数据类型转换(一般是高级转为低级,可能会损失精度)

1、显示转化

2、隐式转换

三、C语言常用命令

1、查看ASCLL码表

man ASCII

2、查看字符长度

3、查看头文件内容

例:vi /usr/include/limits.h

查看不同数据类型表示的范围

使用头文件:

#include<limits.h>

4、常用打印

1)整数:

%d十进制

%x十六进制

%o八进制

%#x:打印以0x开头的十六进制

2)浮点型

%f  float

%lf double

3)字符型%c

4)科学计数法%e

5)字符串%s

6)地址%p

5、结束程序运行ctrl+C

6、scanf的用法

scanf("%d",&A);

千万不要有\n!

7、同时打开两段代码

命令:

:vsp 要打开的文件夹

8、查函数手册man +函数

例:man putchar

四、常量-整型、浮点、指数常量

常量是指在程序运行期间数值不发生变化的数据,整型常量就是整数

(一)整数

1、整数在赋值时,只有八进制、十进制和十六进制形式

2、举例

(二)浮点数(实数)

一般含有小数,只有十进制,单精度和双精度,一般形式和指数形式

1、举例

小数由于精度太小,默认为0

(三)字符常量

可以把字符常量看作一个字节的正整数(每一个字符都对应一个ASCII码数值)。

1、常用的字符

2、字符型常量既可以用%c打印字符,也可以用%d打印ASCII对应的正整数

3、大写字母和小写字母相差32,小写=大写+32/‘ ’

4、小写c=‘A’+2+‘  ’

5、字符0-9

6、字符和数字相差48

数字2=字符2-48

(四)字符串常量(有一个隐含字符,以\0结尾)

1、字符串以\0结尾

“A”=‘A’+‘\0’

2、举例

3、字符串数组用char数据类型定义

(五)标识常量

1、宏是原样替代不是运算

如果想要做计算,要加上括号

2、宏定义格式 #define ONE 1(没有;)

3、如果行太长,行尾用\续行

#define ABC jjdiednifhiof\

disnclisa

五、变量

(一)概述

1、变量名由字母、数字、下划线组成

2、不能以数字开头,不能和C的关键字重名

3、在程序运行时,变量所占的内存空间,由变量的数据类型决定

4、变量在内存中的首地址,称为变量的地址

5、变量的一般格式:

存储类型 数据类型 变量名

存储类型是关键词auto(默认)、register、static和extern

六、变量的存储类型

(一)auto变量

只能在某个程序范围内使用,即局部变量,通常在函数体内或函数的复合语句之中。默认是一个随机的值。

1)局部变量,第二个输出报错

2)一般来说auto是省略的

(二)register寄存器型

将变量放入寄存器,这样可以加快程序的运行速度

1)放到处理器内部

2)如果申请不到就使用一般内存,同auto

3)在程序运行时,变量都调入处理器使用,如果频繁访问一个变量,可直接用register定义在处理器内部的寄存器中

4)由于寄存器数量有限,所以将变量放在寄存器可能反而会降低运行速度

5)寄存器存储类型,不能用&来查看地址

(三)全局变量static/extern

1、既可以修饰局部变量,也可以修饰全局变量。既可以在函数体内,也可以在函数体外(默认是0)。

2、static的特点

1)在内存中以固定地址存放,而不是以堆栈的形式存放。

2)只要程序没结束,就不会随着说明它的程序段消失而结束,而且下次调用该函数,该存储类型修饰的变量不在重新说明,而且保留上次存在的值。

3、auto和static区别例子

auto:

一次循环之后,a被销毁

static:

在一次循环后a不会被销毁,即使有命令也不会重新被赋值。

4、extern(全局变量,能被其他文件的程序访问)举例

5、1、2说明static和extern都是修饰全局,区别在于static是根据程序运行而存在,不能在其他文件使用,而extern修饰的全局变量可以在不同文件之间使用。

注意事项

1、可以直接给bool类型的变量赋一个true/false。

2、省略头文件用_Bool定义bool类型,则只能给变量赋数值,不能再赋true/false。

3、ch用%d来打印字符对应的ASCII码,用%c来打印字符。

4、%#x:打印以0x开头的十六进制

5、可以把字符常量看作一个字节的正整数(每一个字符都对应一个ASCII码数值)。

注意要用引号引起来:int a='F';

6、宏是原样替代不是运算

7、寄存器存储类型,不能用&来查看地址

8、再次调用含有static类型的变量的函数,该存储类型修饰的变量不在重新说明,而且保留上次存在的值,在一次循环后a不会被销毁,即使有命令也不会重新被赋值。

9、static和extern都是修饰全局,区别在于static是根据程序运行而存在,不能在其他文件使用,而extern修饰的全局变量可以在不同文件之间使用。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Excel和图片如何互相转换?有何技巧?

一、将图片转为excel表格 首先&#xff0c;打开金鸣识别网站&#xff0c;点击“点击添加需转换的图片或PDF”按钮&#xff0c;添加待识别的图片或PDF文件。 添加完待识别的图片或PDF后&#xff0c;点击“提交识别”按钮&#xff0c;程序便开始识别。 识别完成后&#xff0c;系…

Flutter之Widget生命周期

目录 初始化构造函数initStatedidChangeDependencies 运行时builddidUpdateWidget 组件移除deactivatedisposereassemble 函数生命周期说明&#xff1a;实际场景App生命周期 前言&#xff1a;生命周期是一个组件加载到卸载的整个周期&#xff0c;熟悉生命周期可以让我们在合适的…

航天科技×辰安科技 打造智慧化工园区安全保障平台

近年来&#xff0c;国内化工园区安全事故频发&#xff0c;多起化工园区重特大事故造成了严重人员财产损失的同时&#xff0c;也重创了行业的整体发展。在智能制造和工业互联网的背景下&#xff0c;建设智慧化工园区&#xff0c;使用智能化手段实现安全生产是解决当前化工园区安…

【Overload游戏引擎细节分析】视图投影矩阵计算与摄像机

本文只罗列公式&#xff0c;不做具体的推导。 OpenGL本身没有摄像机(Camera)的概念&#xff0c;但我们为了产品上的需求与编程上的方便&#xff0c;一般会抽象一个摄像机组件。摄像机类似于人眼&#xff0c;可以建立一个本地坐标系。相机的位置是坐标原点&#xff0c;摄像机的朝…

2020年下半年~2022下半年下午题易错总结

2020年下半年 试题一&#xff1a; 1.组播报文对无线网络空口的影响主要有(14) &#xff0c;随着业务数据转发的方式不同, 组播报文的抑制分别在 (15)、(16) 配置。 答案&#xff1a; &#xff08;14&#xff09;无线空口拥塞 &#xff08;15&#xff09;直连AP的交换…

瑞芯微RK3568核心板在边缘服务器产品中的应用-迅为电子

迅为RK3568核心板在边缘服务器产品中可以发挥关键作用&#xff0c;为边缘计算应用提供高性能的计算和多媒体处理能力。边缘服务器通常用于处理和存储数据&#xff0c;执行本地计算任务&#xff0c;并支持与远程云服务的通信。以下是RK3568核心板在边缘服务器产品中的应用方案&a…

项目中 .env.development 与 .env.production 的区别

文章目录 一、项目中使用此两个文件的意义二、使用方式 一、项目中使用此两个文件的意义 我们在开发项目时&#xff0c;经常会有开发环境与生产环境&#xff0c;分别会对应不同的请求地址与各种不同的变量&#xff0c;这个时候我们就可以使用 process.env 去抓取这两个文件写的…

VS使用Visual Assist添加代码说明信息

写代码时&#xff0c;我们一般需要在代码的最前面添加一些说明信息&#xff0c;作者的联系方式等等。一些高级的 IDE 工具提供修改代码模板的功能&#xff0c;这样就能够在创建新代码时自动加上版权信息。Visual Studio 虽然没有提供这样的操作界面&#xff0c;但是我们可以通过…

Linux上如何部署SpringBoot项目——手把手教会你

目录 前言 1、准备操作 1.1、Linux上安装jdk 1.2、准备MySQL数据库 1.3、打开云服务器的防火墙 1.4、准备jar包 2、部署 前言 下面是教你部署SpringBoot项目&#xff0c;jar包形式的&#xff0c;不是war包&#xff01;&#xff01;&#xff01; 1、准备操作 1.1、Linux…

echarts的markline警标线(一条/多条)的使用

echarts之markLine(可以设置特定阈值线(警戒线)) 一条线写法 series: [{name: Fake Data,type: line,showSymbol: false,data: data,markLine: {symbol: [none, none], // 去掉箭头label: {show: false,position: start,formatter: {b}},data: [{name: 阈值,yAxis: 200}],line…

ruoyi识别访问设备是pc端还是移动端跳转到对应的登录页面

背景需求 ruoyi框架&#xff0c;前后端分离。现在要在用户访问的时候根据不同的设备跳转到不同的登录页面。 教程 router/index.js 修改src/router/index.js&#xff0c;在这里增加自己的要跳转的页面 permission.js 在白名单中添加自己的登录页面 增加以下识别的代码 le…

一氧化碳单位换算 以及环保最低排放

换算单位&#xff1a; 1.0 % 10000 mg/m3 1.0 mg/m3 0.870 ppm 举例&#xff1a;CO表测数据 1.0 %&#xff0c;则10000 mg/m3&#xff0c;则10000*22.4/28 8700 ppm 参考&#xff1a;钢铁工业大气污染物超低排放标准 DB13