從頭學(xué)習(xí)C語(yǔ)言之二維數(shù)組
二維數(shù)組:
引入一個(gè)想法: 一個(gè)變量:相當(dāng)于一個(gè)點(diǎn)。 一維數(shù)組(也就是數(shù)組):點(diǎn)匯聚成為一條直線。 二維數(shù)組:直線匯聚成一個(gè)平面。 三維數(shù)組:平面匯聚成立體圖形。
語(yǔ)法:
類型 數(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ù)組的訪問(wèn):
- 數(shù)組名[下標(biāo)][下標(biāo)]
- a[0][0];//訪問(wèn)a數(shù)組中第一行第一列的元素
- b[1][3];//訪問(wèn)b數(shù)組中第二行第四列的元素
- c[3][3];訪問(wèn)c數(shù)組中第四行第四列的元素
- 同樣要注意下標(biāo)的取值范圍,以防止數(shù)組的越界訪問(wèn)。
- —比如int a[3][4],其“行下標(biāo)”的取值范圍是0 ~ 2,“列下標(biāo)”的取值范圍是 0 ~ 3,超出任何一個(gè)下標(biāo)的訪問(wèn)都是越界訪問(wèn)。(非常容易中招)
二維數(shù)組的初始化:
- 二維數(shù)組在內(nèi)存中是線性存放的,因此可以將所有的數(shù)據(jù)寫在一個(gè)花括號(hào)內(nèi):
- int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
- 為了更直觀的表示元素的分布,可以用大括號(hào)將每一行的元素括起來(lá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}};
- 二維數(shù)組也可以僅對(duì)部分元素賦初值:
- int a[3][4]={{1},{5},{9}};
- 如果希望整個(gè)二維數(shù)組初始化為0,呢么直接在大括號(hào)里寫一個(gè)0即可:
- int a[3][4]={0};
- C99同樣增加了一種新特性:指定初始化的元素。這樣就可以只對(duì)數(shù)組中的某些指定元素進(jìn)行初始哈賦值,而未被賦值的元素自動(dòng)初始化為0:
- int a[3][4]={[0][0]=1,[1][1]=2,[2][2]=3};
- 二維數(shù)組的初始化也能偷懶,讓編譯器根據(jù)元素的數(shù)量計(jì)算數(shù)組的長(zhǎng)度。但只有第1維的元素個(gè)數(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; }
例二:對(duì)前三行每一行的第一個(gè)元素賦初值,其他沒(méi)有被賦值的自動(dòng)補(bǔ)充為0:
#include<stdio.h> int main() { int a[3][4]={{1},{2},{5}}; //把前三行每一行的第一個(gè)元素賦初值,其他沒(méi)有被賦值的自動(dòng)補(bǔ)充為0。 //如果賦值的數(shù),多于三個(gè),后面的會(huì)報(bào)錯(cuò),并且自動(dòng)不算數(shù)。 //如果沒(méi)有對(duì)數(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ù)組元素,其他元素自動(dòng)補(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é)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
- 關(guān)于C語(yǔ)言一維數(shù)組算法問(wèn)題詳解
- C語(yǔ)言一維數(shù)組初步學(xué)習(xí)筆記
- 關(guān)于C語(yǔ)言中的指針與二維數(shù)組
- C語(yǔ)言二維數(shù)組指針的概念及使用
- C語(yǔ)言與java語(yǔ)言中關(guān)于二維數(shù)組的區(qū)別
- C語(yǔ)言面試C++二維數(shù)組中的查找示例
- C語(yǔ)言二維數(shù)組幾種常用的表示方法
- C語(yǔ)言二維數(shù)組中的查找的實(shí)例
- C語(yǔ)言 指針與二維數(shù)組詳解
- 直觀理解C語(yǔ)言中指向一位數(shù)組與二維數(shù)組的指針
- C語(yǔ)言中的一維數(shù)組與二維數(shù)組的實(shí)現(xiàn)
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)爆炸展開(kāi)的掃雷詳解
windows自帶的游戲《掃雷》是陪伴了無(wú)數(shù)人的經(jīng)典游戲,本文將利用C語(yǔ)言實(shí)現(xiàn)這一經(jīng)典的游戲,文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下,這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)爆炸展開(kāi)的掃雷游戲2022-07-07解決C++ fopen按行讀取文件及所讀取的數(shù)據(jù)問(wèn)題
今天小編就為大家分享一篇解決C++ fopen按行讀取文件及所讀取的數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07C語(yǔ)言實(shí)現(xiàn)學(xué)生選修課程系統(tǒng)設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)學(xué)生選修課程系統(tǒng)設(shè)計(jì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02C++學(xué)習(xí)之虛函數(shù)表與多態(tài)詳解
這篇文章主要為大家詳細(xì)介紹了C++中虛函數(shù)表與多態(tài)的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++有一定的幫助,感興趣的小伙伴可以了解一下2023-03-03C++實(shí)現(xiàn)LeetCode(205.同構(gòu)字符串)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(205.同構(gòu)字符串),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C語(yǔ)言中變參函數(shù)傳參的實(shí)現(xiàn)示例
本文主要介紹了C語(yǔ)言中變參函數(shù)傳參,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08探討C語(yǔ)言中關(guān)鍵字volatile的含義
本篇文章是對(duì)C語(yǔ)言中關(guān)鍵字volatile的含義進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05vs2017智能感知錯(cuò)誤解決代碼標(biāo)紅但編譯通過(guò)問(wèn)題
這篇文章主要介紹了vs2017智能感知錯(cuò)誤代碼標(biāo)紅但編譯通過(guò)問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08