天天看點

C語言動态配置設定多元數組

分析兩種動态配置設定二位數組的方法,其原理一緻。

0. 動态配置設定一維數組int a[rows]

#include <stdlib.h>

int main{void}
{
    ...

    int *a = (int *)malloc(rows * sizeof(int));//配置設定一段記憶體,存放rows個int型的資料
    
    ...
}
           

1. 動态配置設定内容不一定連續的二維數組a[rows][columns]

#include <stdlib.h>

int main{void}
{
    ...

    int **a = (int **)malloc(rows * sizeof(int *));//配置設定一個指針數組有rows個元素,數組的每一個元素是一個數組指針
    
    for(i = 0;i < rows; i++)
    {
      a[i] = (int *)malloc(columns * sizeof(int));//為每數組指針配置設定columns個存放int型資料的記憶體
    }

    ...
}
           

2. 配置設定連續的二維數組a[rows][columns]

#include <stdlib.h>

int main{void}
{
    ...

    int **a = (int **)malloc(rows * sizeof(int *));//配置設定一個指針數組有rows個元素,數組的每一個元素是一個數組指針
    
    a[0] = (int *)malloc(rows * columns * sizeof(int));//配置設定存放rows * columns個int型資料的數組,a[0]加1則移動1個int型資料的空間,此處a[0]表示int型資料的位址
    
    for(i = 1;i < rows; i++)
    {
      a[i] = a[0] + i * columns;//每行有columns個int型元素,是以rows每加1,位址加i * columns 
    }

    ...
}
           

繼續閱讀