Linux C语言

news2025/7/16 10:34:25

一、基础知识

(一)冯诺依曼体系

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.coloradmin.cn/o/1103113.html

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

相关文章

【Java基础面试十九】、构造方法能不能重写?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;构造方法能不能重写&…

MyBatisPlus(二十)防全表更新与删除

说明 针对 update 和 delete 语句&#xff0c;阻止恶意的全表更新和全表删除。 实现方式 配置BlockAttackInnerInterceptor拦截器 代码 package com.example.core.config;import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.p…

Godot2D角色导航-自动寻路教程(Godot获取导航路径)

文章目录 开始准备获取路径全局点坐标 开始准备 首先创建一个导航场景&#xff0c;具体内容参考下列文章&#xff1a; Godot实现角色随鼠标移动 然后我们需要设置它的导航目标位置&#xff0c;具体关于位置的讲解在下面这个文章&#xff1a; Godot设置导航代理的目标位置 获取…

Python---if选择判断结构、嵌套结构(if elif else)

1、if选择判断结构作用 if 英 /ɪf/ conj. &#xff08;表条件&#xff09;如果&#xff1b;&#xff08;表假设&#xff09;要是&#xff0c;假如&#xff1b;无论何时&#xff1b;虽然&#xff0c;即使&#xff1b;&#xff08;用于间接疑问&#xff09;是否&#xff1b…

PCI设备与UIO驱动

随着网络的高速发展,对网络的性能要求也越来越高,DPDK框架是目前的一种加速网络IO的解决方案之一,也是最为流行的一套方案。DPDK通过bypass内核协议栈与内核驱动,将驱动的工作从内核态移至用户态,并利用polling mode的线程工作模式加速网络I/O使得网络IO性能出现大幅度的增…

Tuxera NTFS2024最新永久版下载和安装

要使用Tuxera NTFS for Mac&#xff0c;你需要先下载和安装Tuxera NTFS for Mac驱动器&#xff0c;然后按照以下步骤操作&#xff1a; 1、下载和安装Tuxera NTFS for Mac 免费下载Tuxera NTFS for Mac驱动器的最新版本。下载完成后&#xff0c;双击DMG文件并按照提示安装即可…

攀岩安全带,儿童攀岩安全带合规标准是什么?如何办理?

攀岩安全带 本政策适用于主要用于攀岩或登山活动的安全带。攀岩安全带是一种装备&#xff0c;可穿戴在攀岩者或登山者的腰部和大腿处。攀岩安全带为绳子提供了一个连接点&#xff0c;并提供一种手段&#xff0c;以便在攀登、休息、绕绳下降或跌落的过程中为攀登者身体提供支撑…

2023年10月wxid转微信号方法

在9月份tx做了一次调整&#xff0c;以前很多wxid转微信号的办法都失效了。 今天分析了一下微信。捣鼓了一下午。现在已经实现了wxid转微信号。不管对方是否在群里&#xff0c;是否是你的好友 都能转。一分钟出60条左右。 我们先创建一个文本文件&#xff0c;将要转换wxid 放进…

Vue2使用定时器和闭包实现防抖和节流函数。将函数放入util.js中,供具体功能在methods中调用

Vue2使用定时器和闭包实现防抖和节流函数。将函数放入util.js中&#xff0c;供具体功能在methods中调用。<br/ 参考文档&#xff1a; 如何在Vue中优雅的使用防抖节流人类高质量JS防抖与节流机制Vue项目中使用防抖和节流vue2使用lodash中的防抖&#xff08;debounce&#xff…

现货黄金操作建议

如果您想得到更好的现货黄金操作建议&#xff0c;那就应该读读Jack Schwager的经典交易著作是《市场奇才&#xff1a;顶级交易者访谈》。这本书1989年首次出版&#xff0c;当中收录了对美国一些传奇交易者的访谈&#xff0c;当中的一些建议不但有用&#xff0c;而且经得起的时间…

Win10更新错误代码0x800f081f的解决方法

在Win10电脑中&#xff0c;用户点击更新系统版本&#xff0c;却遇到了更新错误的情况&#xff0c;还有0x800f081f错误提示。如果出现这样的情况&#xff0c;用户就无法正常完成Win10系统的更新了&#xff0c;接下来小编给大家介绍两种简单有效的解决方法&#xff0c;解决后大家…

WebGPU入门一

1 WebGPU学习开发环境配置 WebGPU的环境配置比较简单&#xff0c;不需要vite或webpack配置一个复杂的开发环境&#xff0c;直接使用.html文件即可。 1.1 支持WebGPU的浏览器 Chrome 113 beta测试版开始默认支持WebGPU。 1.2 index.html文件 创建index.html文件&#xff0c…

uni-app:对数组对象进行以具体某一项的分类处理

一、原始数据 这里定义为五个数组&#xff0c;种类product有aaa,bbb两种 原始数据在data中进行定义 res: {"success": true,"devices": [{no: 0,product: aaa,alias: "设备1",assign: [["a1", "a2", "a3"],[&q…

论文解析-moETM

论文解析-moETM 参考亮点动机发展现状现存问题 功能方法Encoder改进Decoder改进 评价指标生物保守性批次效应移除 实验设置结果多组学数据整合cell-topic mixture可解释性组学翻译性能评估RNA转录本、表面蛋白、染色质可及域调控关系研究1. 验证同一主题下&#xff0c;top gene…

Python武器库开发-基础篇(二)

基础篇(二) if 语句 编程时经常需要检查一系列条件&#xff0c;并据此决定采取什么措施。在Python中&#xff0c;if 语句让你能够检查程序的当前状态&#xff0c;并据此采取相应的措施 下面是一个简短的示例&#xff0c;演示了如何使用if 语句来正确地处理特殊情形。假设你有…

cmd进程简单操作指令

dir 查询当前路径和子路径 start空格加自己的exe程序&#xff0c;可运行程序。 taskkill /?可以执行很多&#xff0c;通常用于结束程序。 taskkill /f /im qq.exe 启动nginx.exe 查看运行的进程有哪些 选择结束nginx.exe

手写一个PrattParser基本运算解析器3: 基于Swift的PrattParser的项目概述

点击查看 基于Swift的PrattParser项目 PrattParser项目概述 前段时间一直想着手恶补 编译原理 的相关知识, 一开始打算直接读大学的 编译原理, 虽然内容丰富, 但是着实抽象难懂. 无意间看到B站的熊爷关于普拉特解析器相关内容, 感觉是一个非常好的切入点.所以就写了基于Swift版…

试着写几个opencv的程序

一、认识opencv OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源计算机视觉库&#xff0c;旨在提供丰富的图像处理和计算机视觉功能&#xff0c;以帮助开发者构建视觉应用程序。OpenCV最初由英特尔开发&#xff0c;现在由社区维护和支持。它支持…

【Javascript保姆级教程】显示类型转换和隐式类型转换

文章目录 前言一、显式类型转换1.1 字符串转换1.2 数字转换1.3 布尔值转换 二、隐式类型转换2.1 数字与字符串相加2.2 布尔值与数字相乘 总结 前言 JavaScript是一种灵活的动态类型语言&#xff0c;这意味着变量的数据类型可以在运行时自动转换&#xff0c;或者通过显式类型转…