二維動態數組詳解

一、二維動態數組c

二維動態數組是 C 語言中數組中非常重要的一種類型,也是應用非常廣泛的一種數據結構。在 C 語言中,動態分配二維數組需要注意兩點:一是使用malloc, 或calloc函數動態分配內存;二是動態分配內存後,再使用兩重循環為每個元素賦值。以下是一個動態分配二維數組的示例代碼:

#include 
#include 

int main()
{
    int row = 3, col = 4, i, j;
    int **p = (int **)malloc(row * sizeof(int *));
    for (i = 0; i < row; i++)
         p[i] = (int *)malloc(col * sizeof(int));
    for(i=0;i<row;i++)
        for(j=0;j<col;j++)
            p[i][j] = i+j;

    for(i=0;i<row;i++){
        for(j=0;j<col;j++)
            printf("%d ",p[i][j]);
        printf("\n");
    }
    return 0;
}

二、二維動態數組定義

定義二維數組,它首先是一個數組,該數組又存儲了一系列數組,每個數組又存儲了若干變數。其定義方式可以是: int a[2][3];,這裡就定義了一個2行3列的二維數組a。同樣的,我們使用指針也可以定義二維動態數組, int **a;。

三、二維動態數組和矩陣速度

在 C 語言中,使用二維數組可以十分方便地處理矩陣,對於一些矩陣計算可以使用指針運算來加速處理速度。下面是一個二維數組與矩陣運算效率進行比較的代碼:

#include 
#include 
#include 

int main()
{
    int row = 10000, col = 10000, i, j, sum = 0;
    int **p = (int **)malloc(row * sizeof(int *));
    clock_t start,end;

    for (i = 0; i < row; i++)
         p[i] = (int *)malloc(col * sizeof(int));

    for(i=0;i<row;i++)
        for(j=0;j<col;j++)
            p[i][j] = 1;

    start = clock();
    for(i=0;i<row;i++)
        for(j=0;j<col;j++)
            sum += p[i][j];
    printf("二維數組求和:%d, 耗時:%ld 毫秒\n", sum, clock()-start);

    int *q = (int *)malloc(row * col * sizeof(int));
    for(i=0;i<row*col;i++)
        q[i] = 1;

    sum = 0;
    start = clock();
    for(i=0;i<row;i++)
        for(j=0;j<col;j++)
            sum += *(q+i*col+j);
    printf("矩陣求和:%d, 耗時:%ld 毫秒\n", sum, clock()-start);

    free(p); free(q); 
    return 0;
}

四、二維動態數組怎麼做

二維數組的申明可以寫成:
int a[M][N];
其中,M、N表示數組a的行數和列數。定義了一個M行N列的二維數組。
二維數組的訪問方法如下:
int value = a[i][j];

五、二維動態數組賦值

1、直接賦值:int a[2][3]={{1,3,5},{2,4,6}};
2、循環賦值:

int i,j;
for(i=0;i<M;i++)
    for(j=0;j<N;j++)
        a[i][j]=2*i+j;

六、二維動態數組聲明

聲明一個二維數組變數時,必須指定二維數組的行數和列數,這兩個數可以使用常量、變數、數值型常數表達式等表示。

七、二維動態數組初始化

對數組初始化的幾種常見方式:
1、直接賦值:
int a[2][3]={{1,3,5},{2,4,6}};
2、置0:
int a[2][3]={0};
3、循環初始化:
int i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
a[i][j]=2*i+j;

八、二維動態數組vector

vector可以實現動態二維數組,其中第一維使用resize,第二維使用vector進行動態分配。具體用法如下:

#include 
#include 

using namespace std;

int main()
{
    int dim1 = 2, dim2 = 3;
    vector<vector> a(dim1);
    for (int i = 0; i < dim1; ++i)
        a[i] = vector(dim2);

    for (int i = 0; i < dim1; ++i)
        for (int j = 0; j < dim2; ++j)
            a[i][j] = i+j;

    for (int i = 0; i < dim1; ++i) {
        for (int j = 0; j < dim2; ++j) {
            cout << a[i][j] << "\t";
        }
        cout << endl;
    }
    return 0;
}

九、二維動態數組定義stl

使用stl庫定義動態二維數組非常方便,只需要使用vector來定義即可。

#include 
#include 

using namespace std;

int main()
{
    int dim1 = 2, dim2 = 3;
    vector<vector> a(dim1, vector(dim2, 0));

    for (int i = 0; i < dim1; ++i)
        for (int j = 0; j < dim2; ++j)
            a[i][j] = i+j;

    for (int i = 0; i < dim1; ++i) {
        for (int j = 0; j < dim2; ++j) {
            cout << a[i][j] << "\t";
        }
        cout << endl;
    }
    return 0;
}

十、二維動態數組c語言

在 C 語言中,動態分配二維數組需要注意兩點:一是使用malloc, 或calloc函數動態分配內存;二是動態分配內存後,再使用兩重循環為每個元素賦值。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/269838.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-16 13:33
下一篇 2024-12-16 13:33

相關推薦

  • QML 動態載入實踐

    探討 QML 框架下動態載入實現的方法和技巧。 一、實現動態載入的方法 QML 支持從 JavaScript 中動態指定需要載入的 QML 組件,並放置到運行時指定的位置。這種技術…

    編程 2025-04-29
  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Python去掉數組的中括弧

    在Python中,被中括弧包裹的數據結構是列表,列表是Python中非常常見的數據類型之一。但是,有些時候我們需要將列表展開成一維的數組,並且去掉中括弧。本文將為大家詳細介紹如何用…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • Python愛心代碼動態

    本文將從多個方面詳細闡述Python愛心代碼動態,包括實現基本原理、應用場景、代碼示例等。 一、實現基本原理 Python愛心代碼動態使用turtle模塊實現。在繪製一個心形的基礎…

    編程 2025-04-29
  • Python二維數組對齊輸出

    本文將從多個方面詳細闡述Python二維數組對齊輸出的方法與技巧。 一、格式化輸出 Python中提供了格式化輸出的方法,可以對輸出的字元串進行格式化處理。 names = [‘A…

    編程 2025-04-29
  • Java創建一個有10萬個元素的數組

    本文將從以下方面對Java創建一個有10萬個元素的數組進行詳細闡述: 一、基本介紹 Java是一種面向對象的編程語言,其強大的數組功能可以支持創建大規模的多維數組以及各種複雜的數據…

    編程 2025-04-28
  • Python數組隨機分組用法介紹

    Python數組隨機分組是一個在數據分析與處理中常用的技術,它可以將一個大的數據集分成若干組,以便於進行處理和分析。本文將從多個方面對Python數組隨機分組進行詳細的闡述,包括使…

    編程 2025-04-28
  • Python數組索引位置用法介紹

    Python是一門多用途的編程語言,它有著非常強大的數據處理能力。數組是其中一個非常重要的數據類型之一。Python支持多種方式來操作數組的索引位置,我們可以從以下幾個方面對Pyt…

    編程 2025-04-28

發表回復

登錄後才能評論