從頭學(xué)習(xí)C語言之二維數(shù)組
二維數(shù)組:
引入一個想法: 一個變量:相當(dāng)于一個點。 一維數(shù)組(也就是數(shù)組):點匯聚成為一條直線。 二維數(shù)組:直線匯聚成一個平面。 三維數(shù)組:平面匯聚成立體圖形。
語法:
類型 數(shù)組名[常量表達(dá)式][常量表達(dá)式]
- int a[6][6];//6*6,6行6列
- char b[4][5];//4*5,4行5列
- double c[6][3];//6*3,6行3列
二維數(shù)組存放方式:

二維數(shù)組的訪問:
- 數(shù)組名[下標(biāo)][下標(biāo)]
- a[0][0];//訪問a數(shù)組中第一行第一列的元素
- b[1][3];//訪問b數(shù)組中第二行第四列的元素
- c[3][3];訪問c數(shù)組中第四行第四列的元素
- 同樣要注意下標(biāo)的取值范圍,以防止數(shù)組的越界訪問。
- —比如int a[3][4],其“行下標(biāo)”的取值范圍是0 ~ 2,“列下標(biāo)”的取值范圍是 0 ~ 3,超出任何一個下標(biāo)的訪問都是越界訪問。(非常容易中招)
二維數(shù)組的初始化:
- 二維數(shù)組在內(nèi)存中是線性存放的,因此可以將所有的數(shù)據(jù)寫在一個花括號內(nèi):
- int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
- 為了更直觀的表示元素的分布,可以用大括號將每一行的元素括起來:
- int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
- 或者
- int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
- 二維數(shù)組也可以僅對部分元素賦初值:
- int a[3][4]={{1},{5},{9}};
- 如果希望整個二維數(shù)組初始化為0,呢么直接在大括號里寫一個0即可:
- int a[3][4]={0};
- C99同樣增加了一種新特性:指定初始化的元素。這樣就可以只對數(shù)組中的某些指定元素進(jìn)行初始哈賦值,而未被賦值的元素自動初始化為0:
- int a[3][4]={[0][0]=1,[1][1]=2,[2][2]=3};
- 二維數(shù)組的初始化也能偷懶,讓編譯器根據(jù)元素的數(shù)量計算數(shù)組的長度。但只有第1維的元素個數(shù)可以不寫,其他維度必須加上:
- int a[][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
示例:
例一:二維數(shù)組的舒服寫法:
#include<stdio.h>
int main()
{
int a[3][4]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
printf("\n");
return 0;
}
例二:對前三行每一行的第一個元素賦初值,其他沒有被賦值的自動補(bǔ)充為0:
#include<stdio.h>
int main()
{
int a[3][4]={{1},{2},{5}};
//把前三行每一行的第一個元素賦初值,其他沒有被賦值的自動補(bǔ)充為0。
//如果賦值的數(shù),多于三個,后面的會報錯,并且自動不算數(shù)。
//如果沒有對數(shù)組進(jìn)行賦值,則得出的結(jié)果為隨機(jī)數(shù)。
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
例三:指定數(shù)組元素,其他元素自動補(bǔ)充為0:
#include<stdio.h>
int main()
{
int a[3][4]={[2][3]=1,[2][1]=8,[1][2]=5};
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
例四:證明只有第一維可以不寫數(shù)值:
#include<stdio.h>
int main()
{
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};//只有第一維可以不寫
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C++基于CreateToolhelp32Snapshot獲取系統(tǒng)進(jìn)程實例
這篇文章主要介紹了C++基于CreateToolhelp32Snapshot獲取系統(tǒng)進(jìn)程實例,是Windows應(yīng)用程序設(shè)計中非常實用的技巧,需要的朋友可以參考下2014-10-10
VC外部符號錯誤_main,_WinMain@16,__beginthreadex解決方法
這篇文章主要介紹了VC外部符號錯誤_main,_WinMain@16,__beginthreadex解決方法,實例分析了比較典型的錯誤及對應(yīng)的解決方法,需要的朋友可以參考下2015-05-05
C++ 基礎(chǔ)編程之十進(jìn)制轉(zhuǎn)換為任意進(jìn)制及操作符重載
這篇文章主要介紹了C++ 基礎(chǔ)編程之十進(jìn)制轉(zhuǎn)換為任意進(jìn)制及操作符重載的相關(guān)資料,需要的朋友可以參考下2017-02-02
基于matlab對比度和結(jié)構(gòu)提取的多模態(tài)解剖圖像融合實現(xiàn)
這篇文章主要介紹了多模態(tài)醫(yī)學(xué)圖像配準(zhǔn)與融合的概念、方法及意義,最后簡單介紹了小波變換分析方法。感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2021-11-11
cocos2dx-3.10 C++實現(xiàn)滾動數(shù)字
這篇文章主要為大家詳細(xì)介紹了cocos2dx-3.10 C++實現(xiàn)滾動數(shù)字效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-09-09
C++中POCO庫的安裝與基礎(chǔ)知識介紹(Windwos和Linux)
這篇文章主要為大家介紹了C++ POCO庫的簡單介紹、下載以及安裝方式、簡單代碼示例,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-05-05

