• 数组指针——指向数组的指针(通过指针控制数组)


    //一维数组
        int arr1[5] = { 1,2,3,4,5 };
        int(*arrP)[5] = &arr1;    //定义数组指针 必须用&arr1, arr1是数组首元素的地址;&arr1是代表数组地址虽然地址都一样但是当加1的时候就有区别了,说明还是代表的不同东西
        for (int i = 0; i < sizeof(arr1) / sizeof(arr1[0]); i++)  //当遍历数组是一个方法时不用写死(得到数组的行列数) 
        {
            printf("arr1[%d]=%d
    ", i, (*arrP)[i]);
        }
        printf("--------------------------------
    ");
        //二维数组
        int arr2[3][5] = { {1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15} };
        arrP = arr2;  //数组指针指向二维数组
        for (int i = 0; i < sizeof(arr2) / sizeof(arr2[0]); i++)//当遍历数组是一个方法时不用写死(得到数组的行列数)
        {
            for (int j = 0; j < sizeof(arr2[0]) / sizeof(arr2[0][0]); j++)
            {
                printf("int[%d][%d]=%d
    ", i, j, (*(arrP + i))[j]);// printf("int[%d][%d]=%d
    ", i, j, arr2[i][j]);
            }
        }
        printf("--------------------------------
    ");
        //三维维数组
        int arr3[2][3][4] = {
            {{ 1 ,2 ,3 ,4 },{ 5 ,6 ,7 ,8 },{ 9 ,10 ,11 ,12 }},
            {{ 13 ,14 ,15 ,16 },{ 17 ,18 ,19 ,20 },{ 21 ,22 ,23 ,24 } }
        };
        int(*arrP2)[3][4] = arr3;//这个是第一次见到,是自己通过数组指针推倒出来的,我感觉它叫三维数组指针还是二维数组指针合适呢?
        //int(**arrP3)[4];    //这样写也正确但是不能把arr3地址付给它,这个我没从书上见过,是自己通过数组指针推倒出来的,这是数组二级指针?
        for (int i = 0; i < sizeof(arr3) / sizeof(arr3[0]); i++)
        {
            for (int j = 0; j < sizeof(arr3[0]) / sizeof(arr3[0][0]); j++)
            {
                for (int k = 0; k < sizeof(arr3[0][0]) / sizeof(arr3[0][0][0]); k++)
                {
                    //printf("int[%d][%d][%d]=%d
    ",i,j,k,arr3[i][j][k]);
                    printf("int[%d][%d][%d]=%d
    ", i, j, k, (*(*(arrP2 + i) + j))[k]);
                }
            }
        }
        getchar();
    指针和数组直接对应关系之如何记忆
  • 相关阅读:
    HDU 1075 What Are You Talking About(字典树)
    HDU 1075 What Are You Talking About (stl之map映射)
    HDU 1247 Hat’s Words(字典树活用)
    字典树HihoCoder
    HDU 1277全文检索(字典树)
    HDU 3294 Girls' research(manachar模板题)
    HDU 3294 Girls' research(manachar模板题)
    HDU 4763 Theme Section(KMP灵活应用)
    Ordering Tasks UVA
    Abbott's Revenge UVA
  • 原文地址:https://www.cnblogs.com/zakers/p/6933609.html
Copyright © 2020-2023  润新知