数组指针 指针数组 二维指针

指针数组和二维数组

# include<stdio.h>

int main()
{
    char *book[]={//数组指针,数组中每个元素都可以使用指针,而每个元素又可以用指针来访问 
        "<C语言设计语言>",
        "<C专家编程>",
        "C和指针", 
        "<C陷阱与缺陷>",//很薄 
        "<C primer Plus>",
        "<带你学C带你飞>",     //这些元素都是指针 
    };
    
    //可以用指向指针的指针的book指针来访问数组 
    
    char **fishC[1];//必须定义数组型,不然会报错 
    fishC[0]=&book[5];//book[5]是指针,&book[5]是指针的指针,所以fish【0】是指向指针的指针
    char **xiaoyvlover[5];
    int i;
    for(i=0;i<5;i++)
    {
        xiaoyvlover[i]=&book[i];
    }
    printf("fishC:%s\n\n",*fishC[0]);//*fishC=book[5],book[5]是指针,打印出这个指针 
    printf("小甲鱼爱的书单:\n");
    for(i=0;i<5;i++)
    printf("%s\n",*xiaoyvlover[i]) ;
    
    return 0;
}

数组指针//即每个数组元素是指针

 # include<stdio.h>

int main()
{
    int array[10]={1,2,3,4,5,6,7,8,9};
    int  *p=array;
    int i;
    
    for(i=0;i<10;i++)
    {
        printf("%d\n",*(p+i));//y也可以*p+i 
    }
    
    return 0;

# include<stdio.h>

int main()
{
    int array[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
    int  **p=array;
    int i,j;
    
    for(i=0;i<3;i++)
    for(j=0;j<4;j++)
    {
        printf("%d\n",*(*(p+i)+j));//y也可以*p+i 
    }
    
    return 0;

这样写错误 因为

    printf("p:%p,array;%p\n",p,array);
    printf("p+1:%p,array+1:%p",p+1,array+1);//p+1代表加一个地址逻辑单位量4,array+1就是加一 

改成这样就对了

# include<stdio.h>

int main()
{
    int array[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
//    int  **p=array;
    int i,j;
    
    for(i=0;i<3;i++)
    for(j=0;j<4;j++)
    {
        printf("%d\n",*(*(array+i)+j));
    }
    
    return 0;
 } 

想要用指针指向array就需要用指针数组

 # include<stdio.h>

int main()
{
    int array[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
    int  (*p)[4]=array;// (*p)和array跨度相同 也可以写成(*p)[3][4]=&array 此时跨度相同 
    int i,j;
    
    for(i=0;i<3;i++)
    for(j=0;j<4;j++)
    {
        printf("%d\n",*(*(p+i)+j);//如果上面改了,则 *p=a
    }
    
    return 0;

当然也可以写成下面这样保证指针数组和等号右边跨度相同即可,但一般不这儿写,太麻烦,看上面的代码就行

  # include<stdio.h>

int main()
{
    int array[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
    int  (*p)[3][4]=&array;// (*p)[4]=array;//跨度一样 数组指针 也可以写成(*p)[3][4]=&array 此时跨度相同 
    int i,j;
    
    for(i=0;i<3;i++)
    for(j=0;j<4;j++)
    {
        printf("%d\n",*(*((*p)+i))+j);//相当于将array 换成(*p) 
    }
    
    return 0;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
,发送类别,概率,以及物体在相机坐标系下的xyz.zip目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值