新聞中心
C語(yǔ)言二維數(shù)組初始化的方法
在C語(yǔ)言中,二維數(shù)組是一種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)多個(gè)相同類(lèi)型的數(shù)據(jù),為了方便程序的使用和調(diào)試,我們需要對(duì)二維數(shù)組進(jìn)行初始化,本文將介紹C語(yǔ)言中二維數(shù)組的初始化方法,包括靜態(tài)初始化、動(dòng)態(tài)初始化和逐個(gè)元素初始化。

目前成都創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、慈溪網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
1、靜態(tài)初始化
靜態(tài)初始化是指在編譯時(shí)為二維數(shù)組分配內(nèi)存空間并賦初值,靜態(tài)初始化的語(yǔ)法如下:
數(shù)據(jù)類(lèi)型 數(shù)組名[行數(shù)][列數(shù)] = {元素1, 元素2, ..., 元素n};
我們可以創(chuàng)建一個(gè)3行4列的整型二維數(shù)組,并為其賦予初值:
int arr[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
2、動(dòng)態(tài)初始化
動(dòng)態(tài)初始化是指在運(yùn)行時(shí)為二維數(shù)組分配內(nèi)存空間并賦初值,動(dòng)態(tài)初始化的語(yǔ)法如下:
數(shù)據(jù)類(lèi)型 *指針名;
指針名 = (數(shù)據(jù)類(lèi)型 *)malloc(行數(shù) * sizeof(數(shù)據(jù)類(lèi)型) * sizeof(列數(shù)));
if (指針名 == NULL) {
printf("內(nèi)存分配失敗!
");
exit(0);
} else {
for (int i = 0; i < 行數(shù); i++) {
for (int j = 0; j < 列數(shù); j++) {
*(指針名 + i * sizeof(數(shù)據(jù)類(lèi)型) * sizeof(列數(shù)) + j * sizeof(數(shù)據(jù)類(lèi)型)) = 元素i行j列;
}
}
}
我們可以創(chuàng)建一個(gè)3行4列的整型二維數(shù)組,并為其賦予初值:
int main() {
int **ptr;
ptr = (int **)malloc(3 * sizeof(int *));
if (ptr == NULL) {
printf("內(nèi)存分配失?。?
");
exit(0);
} else {
for (int i = 0; i < 3; i++) {
ptr[i] = (int *)malloc(4 * sizeof(int));
if (ptr[i] == NULL) {
printf("內(nèi)存分配失??!
");
exit(0);
} else {
for (int j = 0; j < 4; j++) {
ptr[i][j] = i * 4 + j + 1;
}
}
}
}
// ... 其他代碼 ...
free(ptr); // 最后記得釋放內(nèi)存空間
return 0;
}
3、逐個(gè)元素初始化
逐個(gè)元素初始化是指在定義二維數(shù)組時(shí)為其指定初值,這種方法的優(yōu)點(diǎn)是不需要額外的內(nèi)存分配操作,但缺點(diǎn)是無(wú)法在運(yùn)行時(shí)修改數(shù)組的元素值,逐個(gè)元素初始化的語(yǔ)法如下:
數(shù)據(jù)類(lèi)型 數(shù)組名[行數(shù)][列數(shù)] = {{元素1, 元素2, ..., 元素n}, ...};
新聞名稱(chēng):c語(yǔ)言二維數(shù)組初始化的方法是什么
地址分享:http://www.dlmjj.cn/article/codgcpo.html


咨詢(xún)
建站咨詢(xún)
