自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C 語(yǔ)言系列教程:使用 malloc() 函數(shù)創(chuàng)建二維數(shù)組

開(kāi)發(fā) 后端
在這篇文章中,我們將學(xué)習(xí)在 C 語(yǔ)言編程中使用 malloc() 函數(shù)創(chuàng)建一個(gè)二維數(shù)組。

malloc() 函數(shù)在 C 語(yǔ)言編程中用于將數(shù)據(jù)存儲(chǔ)在堆中,堆是動(dòng)態(tài)內(nèi)存存儲(chǔ)。多用于數(shù)組的動(dòng)態(tài)聲明,也可用于二維數(shù)組的創(chuàng)建。二維數(shù)組用于繪制具有列和行的表格形式的值。

在這篇文章中,我們將學(xué)習(xí)在 C 語(yǔ)言編程中使用 malloc() 函數(shù)創(chuàng)建一個(gè)二維數(shù)組。

什么是 C 語(yǔ)言編程中的 malloc() 函數(shù)

在一些特定的程序中,我們常常無(wú)法預(yù)測(cè)數(shù)組的大小。如果我們自己將值分配給數(shù)組,那么它在執(zhí)行期間無(wú)法更改。這會(huì)產(chǎn)生問(wèn)題,要么數(shù)組的內(nèi)存變低,要么數(shù)組占用更少的空間浪費(fèi)內(nèi)存,因此為避免這種情況,建議動(dòng)態(tài)分配數(shù)組。

在 C 語(yǔ)言編程中,對(duì)于動(dòng)態(tài)內(nèi)存分配,使用了不同的函數(shù)。其中之一是 malloc() 函數(shù);它向堆發(fā)送特定內(nèi)存塊的請(qǐng)求,如果堆有空間,它通過(guò)將請(qǐng)求的內(nèi)存塊分配給 malloc() 來(lái)響應(yīng)。

malloc() 會(huì)根據(jù)執(zhí)行程序的需要占用分配的內(nèi)存塊空間,執(zhí)行成功后,可以使用 free() 函數(shù)釋放該空間。

如何在 C 語(yǔ)言編程中使用 malloc() 函數(shù)創(chuàng)建二維數(shù)組

在創(chuàng)建之前,請(qǐng)考慮下圖以更好地理解二維數(shù)組的工作原理。

上圖中,我們可以理解,在一個(gè)二維數(shù)組中,先將元素固定在對(duì)應(yīng)的行被填充后的列的第一個(gè)框中,然后是列的第二行,一直到整個(gè)數(shù)組被填充,就像第一個(gè)元素將被放置在 x[0][0],然后是 x[0][1],然后是 [0][2],然后是 x[0][1],[1][ 0],以此類推。

我們將考慮以下在 C 編程中使用 malloc() 創(chuàng)建二維數(shù)組的基本示例。我們創(chuàng)建了一個(gè)文本文件 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("數(shù)組元素是:\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

執(zhí)行l(wèi)inuxmi,這是linuxmi.c的編譯文件,顯示輸出:

nuxmi@linuxmi:~/www.linuxmi.com$ ./linuxmi

如下圖:

在上面的代碼中,我們已經(jīng)包含了 stdlib.h(用于動(dòng)態(tài)內(nèi)存分配)和 stdio.h(用于輸入和輸出)的庫(kù),然后我們聲明了變量 row、column、i 和 j。聲明后,我們調(diào)用 malloc() 根據(jù)“行”和“列”的值分配內(nèi)存。分配內(nèi)存后,我們只需使用兩個(gè)嵌套循環(huán)將值保存在數(shù)組中,然后在嵌套循環(huán)中使用 printf() 顯示值。最后,我們使用free()清空了malloc()在堆上分配的占用空間。

結(jié)論

二維數(shù)組與一維數(shù)組類似,一維數(shù)組和二維數(shù)組的唯一區(qū)別是;二維數(shù)組以表格形式存儲(chǔ)數(shù)據(jù),一維數(shù)組以行的形式存儲(chǔ)數(shù)據(jù)。數(shù)組是數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ),它們可以存儲(chǔ)大量相同數(shù)據(jù)類型的數(shù)據(jù)。在本文中,我們通過(guò)調(diào)用 malloc() 函數(shù)解釋了在動(dòng)態(tài)內(nèi)存中創(chuàng)建二維數(shù)組。

責(zé)任編輯:龐桂玉 來(lái)源: Linux公社
相關(guān)推薦

2009-09-02 10:23:52

C#動(dòng)態(tài)二維數(shù)組

2009-11-16 17:41:41

PHP二維數(shù)組

2009-08-07 10:12:09

C#二維數(shù)組

2010-01-14 17:58:41

C++語(yǔ)言

2009-12-18 15:11:05

Ruby輸出二維數(shù)組

2009-09-18 11:33:37

C#二維數(shù)組初始化

2024-04-28 09:40:28

2021-01-15 08:19:26

二維數(shù)組LeetCode

2009-11-16 17:07:58

PHP二維數(shù)組

2010-07-19 13:06:13

Perl二維數(shù)組

2009-11-17 16:09:04

PHP二維數(shù)組排序

2009-09-16 17:29:10

Linq查詢二維數(shù)組

2010-02-04 16:26:54

C++二維數(shù)組new

2015-11-09 13:03:47

JavaServlet創(chuàng)建二維碼

2010-03-16 15:57:26

Python二維數(shù)組

2009-08-20 11:38:15

C#二維數(shù)組

2010-07-13 15:15:49

Perl二維數(shù)組

2015-01-14 09:46:52

Google API

2010-02-06 10:24:48

C++二維數(shù)組初始化

2009-11-17 09:46:31

PHP二維數(shù)組賦值
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)