【C语言】深入理解数组(一维数组、二维数组的表示及数组与指针的关系)

一、一维数组的定义与初始化

1.一维数组的定义

一维数组也称向量,它用以组织具有一维顺序关系一组同类型的数据

一维数组的定义方式:

数据类型   数组名[常量表达式]

类型说明符表示数组中所有元素的类型;常量表达式指数组的长度(即数组中存放元素的个数)

例如:int array[5];

上述代码 int 表示数组元素的类型,array 是数组的名称,5是指数组的长度。

数组占据的内存空间是连续的,所以很容易计算出数组占据的内存大小( 数组长度*sizeof(数据类型))和每个元素所对应的内存首地址。

上述数组array占据的内存大小为:5*sizeof(int)=20字节

完成数组的定义后,编译器根据数组定义语句中提供的数据类型和数组长度给数组变量分配适当的内存空间。如果想要使用数组操作数据,还需要对数组进行初始化。

2.一维数组的初始化

三种常见的数组初始化元素的方式:

(1)直接对数组中所有元素赋初始值。

int a[4]={1,2,3,4};

表示定义了一个长度为4的整型数组a,a数组中的元素依次是1,2,3,4.

(2)只对数组一部分元素进行赋值 

int b[5]={1,2,3};

表示定义了一个长度为5的整型数组b,数组的前三个元素依次为1,2,3,其他的元素的值会被默认设置为0.

(3)对数组全部元素赋值,但不指定长度

int c[]={1,2,3,4};

系统会根据赋值号右边的初始值列表中给出的初值个数自动设置数组的长度。 

【注意】

  • 数组下标是用方括号括起来的,而不是圆括号
  • 数据类型可以是基本类型,也可以是指针、结构体等
  • 数组名的命名规则和变量名的命名规则相同

### BlazePose算法原理详解 BlazePose 是一种高效的人体姿态估计模型,专为实时应用设计。该算法通过多阶段处理来提高精度并保持低延迟性能。 #### 关键组件流程 1. **轻量级卷积神经网络** 使用 MobileNet 或其他类似的轻量化 CNN 架构作为骨干网,用于提取图像特征[^1]。这类架构能够在移动设备上快速运行而不牺牲太多准确性。 2. **热图预测** 对于人体的关键部位(如关节),BlazePose 预测一组高分辨率的热图。每个像素位置上的值表示对应关键点存在的概率分布情况。这种方法有助于精确定位各个身体部分的位置。 3. **回归分支** 同时还存在一个直接回归坐标坐标的分支,它会给出更加精确的关键点位置信息。这种组合方式可以弥补仅依赖热图可能带来的误差,并进一步提升最终输出的质量。 4. **上下文建模** 利用了空间金字塔池化(SPP)结构以及空洞卷积等技术增强感受野范围内的语义关联性描述能力,从而更好地捕捉不同尺度下的人物形态变化规律。 5. **多阶段细化机制** 整个过程分为多个子任务依次完成:先粗略地找到整个人形轮廓;再逐步聚焦局部细节直至得到完整的骨架结构。此策略不仅简化了训练难度也提高了整体鲁棒性和泛化水平。 6. **高效的后处理逻辑** 包括非极大抑制(NMS),置信度阈值筛选等一系列操作确保最后呈现出来的姿势是最优解之一。此外还有专门针对特定应用场景定制化的调整措施以适应各种复杂环境下的需求。 ```python import mediapipe as mp mp_pose = mp.solutions.pose.Pose() def estimate_pose(image): results = mp_pose.process(image) landmarks = [] if results.pose_landmarks: for landmark in results.pose_landmarks.landmark: landmarks.append((landmark.x, landmark.y)) return landmarks ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值