当前位置: 首页 > news >正文

C语言复习第4章 数组

目录

  • 一、一维数组的创建和初始化
    • 1.1数组的创建
    • 1.2 变长数组
    • 1.3 数组的初始化
    • 1.4 全局数组默认初始化为0
    • 1.5 区分两种字符数组
    • 1.6 用sizeof计算数组元素个数
    • 1.7 如何访问数组元素
    • 1.8 一维数组在内存中的存储(连续存储)
    • 1.9 访问数组元素的另一种方式:指针变量
    • 1.10 数组越界是运行时错误
  • 二、二维数组的创建和初始化
    • 2.1 二维数组的创建
    • 2.2 二维数组的初始化
    • 2.3 行可以省略 列不可以省略
    • 2.4 二维数组在内存中的存储(连续存储)
    • 2.5 二维数组的遍历方式
    • 2.6 arr[行号]可以理解为:该行一维数组的`数组名`
  • 三、数组名
    • 3.1 数组名是首元素地址 本质是指针变量
    • 3.2 数组名代表`整个数组`的两个例外:sizeof和&
    • 3.3 sizeof(arr)和sizeof(arr+0)的区别
    • 3.4 arr和&arr类型的区别(指针+1)
    • 3.5 &arr 和*(&arr) 数组指针解引用得到数组名
    • 3.6 **(&arr) 解引用两次是什么?
    • 3.7 sizeof(*&arr) 和 sizeof(arr)
    • 3.8 再理解一下 什么叫单独放在&或sizeof(含总结)
    • 3.9 sizeof(数组名)和strlen(数组名)
  • 四、数组(名)作为函数参数
    • 4.1 数组(名)作为函数参数 本质传的是什么?
    • 4.2 冒泡排序函数的错误设计
    • 4.3 理解形参int arr[ ] arr[j] &arr[j]的本质
    • 4.4 思考:为什么数组传参 本质要传首元素的地址?
    • 4.5 二维数组传参
  • 五、其他
    • 怎么看数组的类型是什么
    • 用整数初始化字符数组会怎么样
    • &arr和&(arr+1)

一、一维数组的创建和初始化

1.1数组的创建

数组的创建方式:type_t arr_name [const_n]
type_t 是指数组的元素类型
const_n 是一个常量表达式 用来指定数组的大 比如int arr[5+6]

1.2 变长数组

int arr[5];int arr[5+6]都可以
可不可以是int arr[n]呢?
在这里插入图片描述

1.3 数组的初始化

1.不完全初始化 会根据指定的元素个数 把剩余部分初始化为0
2.char数组不完全初始化 剩余部分默认初始化为’\0’ '\0'的码值是0
3.如果不写元素个数 那就必须初始化 编译器会根据初始化的内容确定元素个数 在这里插入图片描述

所以下图的两个数组是不一样的
一个是arr[3] = {1,2,3}
一个是arr[10] = {1,2,3,0,0,0,0,0,0,0}
在这里插入图片描述

  • 注意字符串自带’\0’
    在这里插入图片描述

  • 一些离谱的写法:
    在这里插入图片描述

1.4 全局数组默认初始化为0

  • 在VS2022里 全局数组不初始化 默认都是0
  • 但是局部数组不初始化 整形数组是cccccccc char数组是问号
    在这里插入图片描述
    在这里插入图片描述

1.5 区分两种字符数组

  • "abc"自带’\0’
  • %s是打印到第一个’\0’才停止的
    在这里插入图片描述

1.6 用sizeof计算数组元素个数

这里sizeof(arr[0]) 也可以写成sizeof(int)
但是前者更合逻辑(一个元素的大小)
在这里插入图片描述

1.7 如何访问数组元素

在这里插入图片描述

1.8 一维数组在内存中的存储(连续存储)

● 内存单元的大小为1字节 而int是4个字节(则每个元素占4个内存单元)
● 一维数组在内存中是 连续存储
随着数组下标增长 地址由低到高变化(从低地址用到高地址)
在这里插入图片描述

再结合之前画过的图 推测:
下标越高的元素 其实是越先入栈的 在这里插入图片描述
在这里插入图片描述

1.9 访问数组元素的另一种方式:指针变量

● 所以 给我数组的首元素地址 根据连续存储特点 我就能顺藤摸瓜依次找到整个数组
● p是个整型指针 +1就跳过一个整型
*(p+i) == arr[i]在这里插入图片描述
在这里插入图片描述

p+i == &arr[i]
在这里插入图片描述

1.10 数组越界是运行时错误

  • 数组的下规定是从0开始的 如果数组有n个元素 最后一个元素的下标就是n-1
  • 所以数组的下标如果小于0 或者大于n-1 就是数组越界访问了
  • C语言本身是不做数组下标的越界检查 编译器也不一定报错
  • 编译器不报错 并不意味着程序就是正确的 所以写代码时 做好越界的检查

打印随机值:
可能是没有初始化 也可能是数组越界访问
下图编译器虽然不报错 但是程序明显是错误的
在这里插入图片描述

假如这里给arr[i]赋值的话 就会报错在这里插入图片描述

二、二维数组的创建和初始化

2.1 二维数组的创建

在这里插入图片描述

2.2 二维数组的初始化

  • 不完全初始化 默认也是0和’\0’
    在这里插入图片描述
  • 可以帮一维数组的每个元素看做一维数组
    在这里插入图片描述

2.3 行可以省略 列不可以省略

如果下面这个不给行数3 定义成[ ][4] 它也是可以知道是1234 5678 9000的
因为反正知道一行要放几个元素(列数已知)
如果定义成[4][ ] 编译器就不知道怎么办 一上来要怎么放?
所以
列不可以省略
行可以通过每列放几个来确定 所以行可以省略(前提是 后面有具体的初始化内容了)
在这里插入图片描述

2.4 二维数组在内存中的存储(连续存储)

  • 二维数组在内存中 其实也是连续存放的
    在这里插入图片描述
    在这里插入图片描述

2.5 二维数组的遍历方式

其实也一维数组类似
方式1 利用行号和列号
方式2 利用其连续存放的特性 把下图的二维数组直接看作一个12个元素的一维数组
在这里插入图片描述

方式3 利用2.6的理解
2.6说了:arr[i]是第i行一维数组的数组名
arr是二维数组的数组名
数组名 单独 放在sizeof里 求的是整个数组的大小!
sizeof(arr[0][0])是一个元素的大小 等价于sizeof(int)
整个二维数组大小/每一行一维数组大小=sizeof(arr)/sizeof(arr[0])=行数
每一行一维数组大小/每个元素大小=sizeof(arr[0])/sizeof(arr[0][0])=列数
在这里插入图片描述

2.6 arr[行号]可以理解为:该行一维数组的数组名

arr[3][4] = {1,2,3,4,5,6,7,8,7,7,7,7}: 三个一维数组 每个一维数组四个元素
1 2 3 4—>数组名arr[0] arr[0][1]=2
5 6 7 8—>数组名arr[1]
7 7 7 7—>数组名arr[2]

二维数组是一维数组的数组
二维数组的每个元素(每一行) 可以看做一行一维数组 且每一行的数组名就是arr[行号]
如果把1 2 0 0看成一个一维数组的话
类比:
arr[i]:arr数组名 i下标 则arr[0][j]:arr[0]数组名 j下标
其中**arr[0]指的就是1 2 0 0这个一维数组的数组名**
以此类推 第二行的数组名就是arr[1]
在这里插入图片描述

三、数组名

3.1 数组名是首元素地址 本质是指针变量

在这里插入图片描述
在这里插入图片描述

3.2 数组名代表整个数组的两个例外:sizeof和&

● sizeof(单独放一个数组名) 则这里的数组名表示整个数组 计算的是整个数组的大小 单位是字节
● &单独跟一个数组名 则这里的数组名也表示整个数组 取出的是整个数组的地址 是个数组指针
除了这两个例外 其他遇到的所有的数组名 都表示首元素地址

3.3 sizeof(arr)和sizeof(arr+0)的区别

sizeof(arr+0) 数组名不是单独放在sizeof里面 所以arr表示的还是首元素地址
arr如果参与运算 那肯定是个指针了 也就是看做首元素地址
在这里插入图片描述

3.4 arr和&arr类型的区别(指针+1)

在这里插入图片描述

arr和&arr虽然值相同 但类型是不一样的!!
arr是整型指针arr的类型是int*
&arr是数组指针&arr的类型是int (*)[10]
这就是本质区别
在这里插入图片描述

在这里插入图片描述

p+1跳过几个字节 取决于指针的类型
int* p是整型指针 p+1跳过一个int大小的空间 4字节-类型是int*
char* p是字符指针 p+1跳过一个char大小的空间 1字节-类型是char*
&数组名是数组指针 p+1跳过一个数组大小的空间 元素个数*元素大小个字节-类型是int(*)[10]
下图B08-AE0 = 28 = 十进制的40
在这里插入图片描述

3.5 &arr 和*(&arr) 数组指针解引用得到数组名

在这里插入图片描述

  • 所以都是求的整个数组的大小
    在这里插入图片描述

3.6 **(&arr) 解引用两次是什么?

再给p3解引用一次 发现就拿到了首元素1
但是p3可不是二级指针 传参的时候可不能写成二级指针
二级指针 一定是某个地址的地址
但是这里 p3是一整个数组的地址 p3应该是数组指针 而不是二级指针

在这里插入图片描述
其实我觉得 p3还真的可以理解成地址的地址
因为arr本身就是首元素地址 &arr不就是把地址的地址拿到了
(只能这么理解理解 但是这种说法是错的 前面已经提到过 &单独数组名拿的是整个数组的地址)
但是只能自己偷偷这么去理解 语法不是这样的

3.7 sizeof(*&arr) 和 sizeof(arr)

  • 求的都是整个数组的大小
    在这里插入图片描述

3.8 再理解一下 什么叫单独放在&或sizeof(含总结)

在这里插入图片描述

单独的情况下 arr[1]表示第二行数组的数组名
如果不是arr[1]"两个单独"的情况
那么数组名arr[1]表示首元素地址(就是第二行第一个元素的地址)

在这里插入图片描述

3.9 sizeof(数组名)和strlen(数组名)

  • strlen是专门针对字符串的函数
  • char arr[10]=“abc”;
    sizeof(arr)求出来就是10字节 放了什么内容没关系
    而strlen(arr)求到的就是\0之前的 求到3

四、数组(名)作为函数参数

4.1 数组(名)作为函数参数 本质传的是什么?

● arr不符合前面提到的"两个单独"这里arr就是首元素地址 本质上是指针
● 既然传过来的是地址 那么用指针接 才更规范
在这里插入图片描述
char ch[]本质就是char* ch
ch是指针变量 大小恒为8/4
在这里插入图片描述

4.2 冒泡排序函数的错误设计

下图是冒泡排序的一种经典错误
形参的int arr[] 本质上就是整型指针int* arr
既然本质是指针 sizeof(arr)计算的就是指针的大小 永远是8字节or4字节
则sizeof(arr)/sizeof(arr[0])恒为2或者1
在这里插入图片描述
在这里插入图片描述


● 把sz在main算好作为参数传进来 才是正确的做法
● 因为在main里 单独 把数组名arr给sizeof( ) 求的就是整个数组的大小
参考代码:

void Sort(int arr[],int sz)
{int i = 0;int j = 0;for (i = 0; i < sz - 1; i++){ for (j = 0; j < sz - i - 1; j++)if (arr[j] > arr[j + 1]){int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}
}int main()
{int arr[] = { 10,9,8,7,6,100,5,4,3,2,1 };for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)printf("%d ", arr[i]);printf("\n");Sort(arr, sizeof(arr) / sizeof(int));for (int i = 0; i < sizeof(arr) / sizeof(int); i++)printf("%d ", arr[i]);return 0;
}

其实主要看sizeof( )里放的本质是什么
如果在函数里再新定义一个数组 还是一样可以正确求出该数组的大小(字节)的
在这里插入图片描述

4.3 理解形参int arr[ ] arr[j] &arr[j]的本质

● 把本质是int* arr的东西写成int arr[ ] 主要是为了用下标访问的时候可能更好理解
int arr[]从形式上好理解 但本质还是int* arr
arr[j]本质上是*(arr+j) 表示访问下标为j的元素
&arr[j]本质上是arr+j 表示下标为j的元素的地址
在这里插入图片描述

4.4 思考:为什么数组传参 本质要传首元素的地址?

思考为什么这么设计?
● 首先 前面提到 数组是连续存放在内存中的 所以只要知道起始地址 就可以顺藤摸瓜找到整个数组 只传一个首元素地址 可以"代表/找到整个数组"
● 其次 假设数组传参传的不是传址 而是一份数组的临时拷贝 那么假如数组100000个元素? 浪费空间和时间!!!

4.5 二维数组传参

  • 请回看3.6
    在这里插入图片描述

五、其他

怎么看数组的类型是什么

int num = 10; 去掉变量名 剩下的就是类型
那么 int num[10] = {1,2,3}; 去掉num 剩下的int [10] 就是类型
即数组num的类型就是int [10] 而且这个10不能被省略
在这里插入图片描述

算大小也不会这么算 因为[ ]写几 还得自己去数一下
只能说 就借此理解一下 数组也是有类型的 就跟int a = 10的a一样
在这里插入图片描述

用整数初始化字符数组会怎么样

在这里插入图片描述

&arr和&(arr+1)

首先必须要明确:&取地址符是把某个变量的地址取出来了

之前我们说过 arr就是一个指针 不是指针变量 arr的本质是常量(十六进制形式)
所以 &arr就是一个特例(按道理&arr应该报错的 因为arr根本不是变量)
但是 &arr直接把整个数组的地址取出来了
在这里插入图片描述

而除了&单独的数组名arr这个特殊情况
arr+1 得到的其实是第二个元素的地址 arr+1是个指针 不是指针变量 本质是个常量(和arr一样)
&(arr+1)就不存在特殊情况咯 按照&的要求 直接就报错了
在这里插入图片描述

其实前面也已经说了
&arr[j]本质上是arr+j 表示下标为j的元素的地址
&(arr+1) 相当于 &(&arr[1]) 介四嘛呀
在这里插入图片描述

相关文章:

C语言复习第4章 数组

目录 一、一维数组的创建和初始化1.1数组的创建1.2 变长数组1.3 数组的初始化1.4 全局数组默认初始化为01.5 区分两种字符数组1.6 用sizeof计算数组元素个数1.7 如何访问数组元素1.8 一维数组在内存中的存储(连续存储)1.9 访问数组元素的另一种方式:指针变量1.10 数组越界是运行…...

大数据研究实训室建设方案

一、概述 本方案旨在提出一套全面的大数据研究实训室建设策略&#xff0c;旨在为学生打造一个集理论学习与实践操作于一体的高端教育环境。实训室将专注于培养学生在大数据处理、分析及应用领域的专业技能&#xff0c;通过先进的设施配置、科学的课程体系和实用的实训模式&…...

Unity3D 观察者模式

Unity3D 泛型事件系统 观察者模式 观察者模式是一种行为设计模式&#xff0c;通过订阅机制&#xff0c;可以让对象触发事件时&#xff0c;通知多个其他对象。 在游戏逻辑中&#xff0c;UI 界面通常会监听一些事件&#xff0c;当数据层发生变化时&#xff0c;通过触发事件&am…...

vue从0开始的项目搭建(含环境配置)

一、环境准备 下载node.js 检查node.js版本 替换npm下载源 1.下载node.js: Node.js — 在任何地方运行 JavaScript (nodejs.org) 2.查看版本: windowsr输入cmd进入输入node -v命令查看版本号是否出现确认是否安装 2.替换npm下载源: npm config set registry https://reg…...

力扣61~65题

题61&#xff08;中等&#xff09;&#xff1a; 分析&#xff1a; python代码&#xff1a; # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def rot…...

API接口开发流程与指南

API&#xff08;应用程序编程接口&#xff09;是现代软件开发中不可或缺的一部分&#xff0c;它允许不同的软件应用之间进行交互和数据交换。无论是调用第三方服务、集成内部系统还是开发微服务架构&#xff0c;API都扮演着关键角色。本文将为你提供一个API接口入门的详解&…...

如何在Android中进行日志打印和调试?

在Android开发中&#xff0c;日志打印和调试是开发者定位问题、优化性能和提升应用质量的重要手段。以下将详细阐述如何在Android中进行日志打印和调试&#xff0c;包括日志工具的使用、调试技巧以及实践中的最佳实践。 一、日志工具的使用 1. Log类 Android中的日志工具类是…...

Linux基本使用和程序部署

文章目录 一. Linux背景Linux发行版 二. Linux环境搭建Linux常见命令lspwdcdtouchcatmkdirrmcpmvtailvimgreppsnetstat管道 三. 搭建java部署环境安装jdk安装mysql部署Web项目到Linux 一. Linux背景 1969−1970年,⻉尔实验室的DennisRitchie和KenTompson开发了Unix操作系统. 他…...

照片编辑成动态视频用什么软件好

在数字时代&#xff0c;让照片动起来确实已成为一种流行的潮流和趋势。如今&#xff0c;市面上涌现出众多软件&#xff0c;它们不仅配备了丰富多样的动态效果和特效&#xff0c;还支持用户进行个性化的编辑和创作。无论你是希望将家庭合影转化为充满温情的动画&#xff0c;还是…...

JavaWeb合集-SpringBoot项目配套知识

四、SpringBoot项目配套知识 1、Springboot项目的创建 2、HTTP 概念: Hyper Text Transfer Protocol,超文本传输协议&#xff0c;规定了浏览器和服务器之间数据传输的规则。 2.1 request 请求协议 浏览器向服务器发送请求的规则&#xff08;get、post等&#xff09;。 2.1.1 请…...

Electron入门笔记

Electron入门笔记 ElectronElectron 是什么Electron流程模型创建第一个Electron项目配置自动重启主进程和渲染进程通信打包应用 Electron Electron 是什么 跨平台的桌面应用开发框架使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium和 Node.js Electro…...

python 不相交集简介(并查集算法)【Introduction to Disjoint Set (Union-Find Algorithm)】

什么是不相交集数据结构&#xff1f; 如果两个集合没有任何共同元素&#xff0c;则它们被称为不相交集&#xff0c;集合的交集为空集。 存储不重叠或不相交元素子集的数据结构称为不相交集合数据结构。不相交集合数据结构支持以下操作&#xff1a; 1、将新集合添加到不相交集合…...

23种设计模式之工厂方法模式

文章目录 1. 简介2. 代码2.1 抽象类&#xff1a;Course.java2.2 产品A&#xff1a;JavaCourse.java2.3 产品B&#xff1a;PythonCourse.java2.4 工厂抽象类&#xff1a;CourseFactory.java2.5 产品A的工厂A&#xff1a;JavaCourseFactory.java2.6 产品B的工厂B&#xff1a;PyCo…...

Redis——事务

文章目录 Redis 事务Redis 的事务和 MySQL 事务的区别:事务操作MULTIEXECDISCARDWATCHUNWATCHwatch的实现原理 总结 Redis 事务 什么是事务 Redis 的事务和 MySQL 的事务 概念上是类似的. 都是把⼀系列操作绑定成⼀组. 让这⼀组能够批量执行 Redis 的事务和 MySQL 事务的区别:…...

Redis非关系型数据库操作命令大全

以下是 Redis 的常用操作命令大全&#xff0c;涵盖了键值操作、字符串、哈希、列表、集合、有序集合、发布/订阅、事务等多个方面的操作。 1. 通用键命令 命令说明SET key value设置指定 key 的值GET key获取指定 key 的值DEL key删除指定的 keyEXISTS key检查 key 是否存在E…...

基于SpringBoot+Vue+uniapp微信小程序的澡堂预订的微信小程序的详细设计和实现

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…...

Linux mips架构链接库函数调用plt表汇编代码分析

linux调用共享库中的函数时通过plt表和got表实现位置无关代码&#xff0c;过程中涉及到lazy binding&#xff0c;即在第一调用外部函数时解析被调用的函数地址并将地址写入到got表&#xff0c;后续调用则不需要解析函数地址。这一部分和硬件架构有关&#xff0c;具体的是和cpu指…...

python 作业1

任务1: python为主的工作是很少的 学习的python的优势在于制作工具&#xff0c;制作合适的工具可以提高我们在工作中的工作效率的工具 提高我们的竞争优势。 任务2: 不换行 换行 任务3: 安装pycharm 进入相应网站Download PyCharm: The Python IDE for data science and we…...

Apache 出现 “403 forbidden“ 排查方法

1、检查运行 Apache 进程的用户没有对目录具备读取权限 如果该用户没有对 Directory 指定的目录具备适当的读取权限&#xff0c;就会导致 403 错误。 ​​例如&#xff1a;使用用户apache启动Apache进程&#xff0c;但是apache用户对 Directory 指定的目录没有读取权限 2、检查…...

vue video播放m3u8监控视频

很关键的问题 vite创建的项目不需要import ‘videojs-contrib-hls’ 导入就报错 直接添加如下代码即可 html5: {vhs: {overrideNative: true},nativeVideoTracks: false,nativeAudioTracks: false,nativeTextTracks: false} 下面是完整组件示例 <template><div>…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...