從頭學(xué)習(xí)C語言之二維數(shù)組
二維數(shù)組:
引入一個想法: 一個變量:相當(dāng)于一個點(diǎn)。 一維數(shù)組(也就是數(shù)組):點(diǎn)匯聚成為一條直線。 二維數(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++ fopen按行讀取文件及所讀取的數(shù)據(jù)問題
今天小編就為大家分享一篇解決C++ fopen按行讀取文件及所讀取的數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07C語言實(shí)現(xiàn)學(xué)生選修課程系統(tǒng)設(shè)計
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)學(xué)生選修課程系統(tǒng)設(shè)計,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-02-02C++學(xué)習(xí)之虛函數(shù)表與多態(tài)詳解
這篇文章主要為大家詳細(xì)介紹了C++中虛函數(shù)表與多態(tài)的相關(guān)知識,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C++有一定的幫助,感興趣的小伙伴可以了解一下2023-03-03C++實(shí)現(xiàn)LeetCode(205.同構(gòu)字符串)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(205.同構(gòu)字符串),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C語言中變參函數(shù)傳參的實(shí)現(xiàn)示例
本文主要介紹了C語言中變參函數(shù)傳參,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08vs2017智能感知錯誤解決代碼標(biāo)紅但編譯通過問題
這篇文章主要介紹了vs2017智能感知錯誤代碼標(biāo)紅但編譯通過問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08