栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

指针数组与数组指针

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

指针数组与数组指针

        首先我们需要了解概念:(1)数组指针是本质是指针,它指向的数据类型是数组;(2)指针数组是数组,它的元素是指向某个数据类型的指针;

1.定义

        (1)int (*p1)[5];

        数组指针,(*p1)运算符*先与p结合,表面它是个指针,后与[]结合,定义为数组指针。即指向数组的指针。指针指向有5个int型元素的数组;

        (2)int* p2[5]

        指针数组,p2先与[]结合,表明它是个数组,后与运算符*结合,定义为指针数组。即p2是元素为指向int类型的指针数组,数组的元素个数为5;

        2.应用

        (1)数组指针,限定的数组的size,但是数组的个数未做限定,适合应用在已知数组的元素的size,但数量未知的场景;
        (2)指针数组,限定数组的个数,但是数组的size为做限定,适合应用在已知的数组的个数,但是size未知的场景;

        3.example

#include
#include


//数组指针
int(*p1)[5]; 
//指针数组
int* p2[5];  

int attr[5][5] = { {1,2,3,4,5},{6,7,8,9,0} };

int main()
{
    p1 = &attr[0];
    printf("p1:0x%08x, next:0x%08xn", p1, (p1+1));
    printf("attr[0]:0x%08x, attr[1]:0x%08x", attr[0], attr[1]);
    
    printf("n");
    for (int i = 0; i < 5; i++)
    {
        p2[i] = &attr[i][0];
        printf("p2[%d]:0x%08xn", i, p2[i]);
    }

    return 0;
}

运行结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/303703.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号