美文网首页
二维数组与指针

二维数组与指针

作者: juriau | 来源:发表于2020-03-04 15:37 被阅读0次

声明:int a[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};

二维数组与行指针

二维数组名是一个行指针(常量)

printf("%d", a[0]);  // 报错
printf("%d", *a[1]); // 输出5

定义行指针

int (*p)[4];
p = a;
printf("%d", p[1][2]); // 输出7

注意int* p[4]是指针数组,而int** p是二重指针。只有int (*p)[4]才是行指针。

作为函数参数,我们可以定义形式参数为int a[3][4]int a[][4]int (*p)[4]

二维数组与二重指针

使用二重指针可以建立二维数组

int val = 0;
int **arr = (int **)malloc(sizeof(int*) * 3); // 二维数组
for (int i=0; i<3; i++) {
    arr[i] = (int *)malloc(sizeof(int) * 4);
    for (int j =0; j<4; j++) {
        arr[i][j] = val++;
    }
}

然后我们可以把这个二重指针当作二维数组名来访问数组元素

void printArray2(int **arr, int row, int col){
    for (int i=0; i<row; i++) {
        for (int j=0; j<col; j++) {
            printf("%d\t", arr[i][j]);
        }
        printf("\n");
    }
}

我们得到结果如下:

0   1   2   3   
4   5   6   7   
8   9   10  11  

注意:我们可以把这个二重指针当作二维数组名来使用,**但是二维数组名并不是二重指针,二维数组名是行指针。

int **p=a // 报错

相关文章

  • 数组指针和指针数组

    1.数组指针(又称行指针) 二维数组赋给一指针时: 2.指针数组 二维数组赋给一指针数组: 小结:数组指针只是个指...

  • C++ 进阶篇

    指针数组数组的元素是指针类型Point *pa[2];指针数组与二维数组的差别指针数组的元素在内存中不一定连续,二...

  • 二维数组和指针

    二维数组和指针 ⑴用指针表示二维数组元素。 要用指针处理二维数组,首先要解决从存储的角度对二维数组的认识问题。 一...

  • 笔记八

    二维数组指针:一定要知道指针的指向!!即指针指向哪里。指针的运算:注意移动字节数问题。指针与数组的关系:指针数组:...

  • 二维数组与指针、指针数组、数组指针的用法

    二维数组和指针⑴ 用指针表示二维数组元素。要用指针处理二维数组,首先要解决从存储的角度对二维数组的认识问题。我们知...

  • 12.16学习总结

    二维数组指针:一定要知道指针的指向指针的运算:注意移动字节数的问题指针与数组的关系指针数组:int pb[4];数...

  • 指针数组-访问二维数组

    用指针数组访问二维数组

  • 2018-05-24

    5月24日 上课的第十八天。主要讲了指针与二维数组,要注意二维数组名字与地址的关系,注意指针符号*与取地址符&的应...

  • C语言的指针与数组(进阶篇之二)

    二、二维数组与指针 (1).二维数组元素在内存中的存放方式C语言中,二维数组元素值在内存中是线性的。跟一维数组相差...

  • 2019-08-28(二级指针和二维数组)

    一个二级指针**p和二维数组arr 指针数组 code

网友评论

      本文标题:二维数组与指针

      本文链接:https://www.haomeiwen.com/subject/aaemlhtx.html