FK二十一 发表于 2022-3-13 18:19:55

请大佬解:指向数组指针的指针

int array = {{1,2,3},{4,5,6}};
int xxxx = &array;
我用了:(*(*p)) = &array;
结果显示指针类型不兼容 !有无大佬帮忙讲解一下。不胜感激!{:5_109:}

ba21 发表于 2022-3-13 19:12:24

#include <stdio.h>


int main()
{
        int array = {{1,2,3},{4,5,6}};
        int (*p1) = array; // 数组指针
        int (*p2) = &array; // 二维数组指针
        int i, j;

        for(i=0; i<2; i++) // 行
        {
                for(j=0; j<3; j++) // 列
                {
                        printf("%d ", *(*(p1+i)+j)); // *(p1+i) 行的地址, j 列的地址, *(*(p1+i)+j) 取*(p1+i)行j列地址的值
                }
        }
        printf("\n");


        for(i=0; i<2; i++) // 行
        {
                for(j=0; j<3; j++) // 列
                {
                        printf("%d ", *( *((*p2)+i) +j)); // (*p2)得到1维行的地址(也就是&array二维数组地址 -> array一数组地址),*((*p2)+i) 行的地址,j列的地址,
                }
        }
        printf("\n");


        return 0;
}

FK二十一 发表于 2022-3-13 20:09:58

ba21 发表于 2022-3-13 19:12


你就是我亲大哥{:5_100:}

jhq999 发表于 2022-3-13 20:11:45

本帖最后由 jhq999 于 2022-3-13 20:15 编辑

ba21 发表于 2022-3-13 19:12


#include <stdio.h>


int main()
{
      int array = {{1,2,3},{4,5,6}};
        int *p=*array;//一维数组指针
      int (*p1) = array; // 二维数组指针
      int (*p2) = &array; // 三维数组指针
      int i, j;
        for (i = 0; i < 2*3; i++)
        {
                printf("%d ", p);
        }
                printf("\n");
      for(i=0; i<2; i++) // 行
      {
                for(j=0; j<3; j++) // 列
                {
                        printf("%d ", p1); //
                }
      }
      printf("\n");


      for(i=0; i<2; i++) // 行
      {
                for(j=0; j<3; j++) // 列
                {
                        printf("%d ", p2);
                }
      }
      printf("\n");


      return 0;
}

FK二十一 发表于 2022-3-13 20:27:03

jhq999 发表于 2022-3-13 20:11


你就是我亲二哥!{:5_100:}
页: [1]
查看完整版本: 请大佬解:指向数组指针的指针