C语言指向二维数组的四种指针以及动态分配二维数组的五种方式

03-10 1544阅读

文章目录

  • 应用场景
  • 可能指向二维数组的指针
  • 动态分配二维数组

    应用场景

    当二维数组作为结构成员或返回值时,通常需要根据用户传递的参数来决定二维数组的大小,此时就需要动态分配二维数组。

    可能指向二维数组的指针

    如果现在有一个二维数组a[3][2],那么将有以下几种指针可以指向它:

    C语言指向二维数组的四种指针以及动态分配二维数组的五种方式

    //第一种:二维数组指针,指向整个二维数组
    int (*ptr)[3][2]=&a;
    //第二种:一维数组指针,指向二维数组第一行元素
    int (*ptr)[2]=a;//or &a[0]
    //第三种:int *型指针,指向二维数组第一行第一列的第一个元素
    int *ptr=&a[0][0];//or *a
    //第四种:int *型指针,指向二维数组第一行元素
    int **ptr = calloc(3, sizeof(int *));
    for (int i = 0; i  
    

    动态分配二维数组

    • 方式一
      int main(int argc, char **argv) {
          //初始化
          int (*ptr)[3][2] = calloc(3 * 2, sizeof(int));
          //赋值
          for (int i = 0; i  
      
      • 方式二:
        int main(int argc, char **argv) {
            //初始化
            int (*ptr)[2] = calloc(3 * 2, sizeof(int));
            //赋值
            for (int i = 0; i  
        

        在应用场景中通常采用以下三种方式动态分配二维数组,因为这两种方式在声明二维数组时不需要知道二维数组的大小:

        • 方式三
          int main(int argc, char **argv) {
          	//初始化
              int *a = calloc(2 * 3, sizeof(int));
              //赋值
              for (int i=0;i
                  for (int j = 0; j 

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]