從頭學(xué)習(xí)C語言之二維數(shù)組
二維數(shù)組:
引入一個想法: 一個變量:相當(dāng)于一個點。 一維數(shù)組(也就是數(shù)組):點匯聚成為一條直線。 二維數(shù)組:直線匯聚成一個平面。 三維數(shù)組:平面匯聚成立體圖形。
語法:
類型 數(shù)組名[常量表達式][常量表達式]
- 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ù)組中的某些指定元素進行初始哈賦值,而未被賦值的元素自動初始化為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;
}
例二:對前三行每一行的第一個元素賦初值,其他沒有被賦值的自動補充為0:
#include<stdio.h>
int main()
{
int a[3][4]={{1},{2},{5}};
//把前三行每一行的第一個元素賦初值,其他沒有被賦值的自動補充為0。
//如果賦值的數(shù),多于三個,后面的會報錯,并且自動不算數(shù)。
//如果沒有對數(shù)組進行賦值,則得出的結(jié)果為隨機數(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ù)組元素,其他元素自動補充為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++ fopen按行讀取文件及所讀取的數(shù)據(jù)問題
今天小編就為大家分享一篇解決C++ fopen按行讀取文件及所讀取的數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
C語言實現(xiàn)學(xué)生選修課程系統(tǒng)設(shè)計
這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)學(xué)生選修課程系統(tǒng)設(shè)計,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-02-02
C++學(xué)習(xí)之虛函數(shù)表與多態(tài)詳解
這篇文章主要為大家詳細(xì)介紹了C++中虛函數(shù)表與多態(tài)的相關(guān)知識,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C++有一定的幫助,感興趣的小伙伴可以了解一下2023-03-03
C++實現(xiàn)LeetCode(205.同構(gòu)字符串)
這篇文章主要介紹了C++實現(xiàn)LeetCode(205.同構(gòu)字符串),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
vs2017智能感知錯誤解決代碼標(biāo)紅但編譯通過問題
這篇文章主要介紹了vs2017智能感知錯誤代碼標(biāo)紅但編譯通過問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08

