C 語言系列教程:使用 malloc() 函數創建二維數組
malloc() 函數在 C 語言編程中用于將數據存儲在堆中,堆是動態內存存儲。多用于數組的動態聲明,也可用于二維數組的創建。二維數組用于繪制具有列和行的表格形式的值。
在這篇文章中,我們將學習在 C 語言編程中使用 malloc() 函數創建一個二維數組。
什么是 C 語言編程中的 malloc() 函數
在一些特定的程序中,我們常常無法預測數組的大小。如果我們自己將值分配給數組,那么它在執行期間無法更改。這會產生問題,要么數組的內存變低,要么數組占用更少的空間浪費內存,因此為避免這種情況,建議動態分配數組。
在 C 語言編程中,對于動態內存分配,使用了不同的函數。其中之一是 malloc() 函數;它向堆發送特定內存塊的請求,如果堆有空間,它通過將請求的內存塊分配給 malloc() 來響應。
malloc() 會根據執行程序的需要占用分配的內存塊空間,執行成功后,可以使用 free() 函數釋放該空間。
如何在 C 語言編程中使用 malloc() 函數創建二維數組
在創建之前,請考慮下圖以更好地理解二維數組的工作原理。
上圖中,我們可以理解,在一個二維數組中,先將元素固定在對應的行被填充后的列的第一個框中,然后是列的第二行,一直到整個數組被填充,就像第一個元素將被放置在 x[0][0],然后是 x[0][1],然后是 [0][2],然后是 x[0][1],[1][ 0],以此類推。
我們將考慮以下在 C 編程中使用 malloc() 創建二維數組的基本示例。我們創建了一個文本文件 linuxmi.c 并在其中鍵入以下腳本:
#include <stdio.h>
#include <stdlib.h>
int main() {
int row = 5, col = 4;
int *a = (int *)malloc(row * col * sizeof(int));
int i, j;
for (i = 0; i < row; i++)
for (j = 0; j < col; j++)
*(a + i*col + j) = i + j;
printf("數組元素是:\n");
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
printf("%d ", *(a + i*col + j));
}
printf("\n");
}
free(a);
return 0;
}
要編譯上述程序,我們將使用 GCC 編譯器:
linuxmi@linuxmi:~/www.linuxmi.com$ gcc linuxmi.c -o linuxmi
執行linuxmi,這是linuxmi.c的編譯文件,顯示輸出:
nuxmi@linuxmi:~/www.linuxmi.com$ ./linuxmi
如下圖:
在上面的代碼中,我們已經包含了 stdlib.h(用于動態內存分配)和 stdio.h(用于輸入和輸出)的庫,然后我們聲明了變量 row、column、i 和 j。聲明后,我們調用 malloc() 根據“行”和“列”的值分配內存。分配內存后,我們只需使用兩個嵌套循環將值保存在數組中,然后在嵌套循環中使用 printf() 顯示值。最后,我們使用free()清空了malloc()在堆上分配的占用空間。
結論
二維數組與一維數組類似,一維數組和二維數組的唯一區別是;二維數組以表格形式存儲數據,一維數組以行的形式存儲數據。數組是數據結構的基礎,它們可以存儲大量相同數據類型的數據。在本文中,我們通過調用 malloc() 函數解釋了在動態內存中創建二維數組。