c语言二维数组代码,C语言之二维数组(示例代码)
二維數(shù)組及其指針
1 ) 在了解二維數(shù)組之前,我們先來了解一維數(shù)組及其指針
我們知道,一維數(shù)組中:數(shù)組名代表-->數(shù)組首元素的首地址(千萬(wàn)不要認(rèn)為是數(shù)組的首地址(&a),絕對(duì)不是)在內(nèi)存中,該代碼的表現(xiàn)形式如下圖:
#include
{
int?a[4];
int?*p??=?a;??//表明該指針指向了數(shù)組的首元素地址,當(dāng)然也可以寫為?int?*p?=?&a[0];
return?0;
}
-- 這時(shí)候,對(duì)指針取值(*p),就是對(duì)取出指向地址&a[0]中的值的就是a[0]的數(shù)據(jù)。
----------------------------------分割線------------------------------------
2 )下面我們進(jìn)入二維數(shù)組的介紹,首先,請(qǐng)看一段代碼:#include
intmain()
{
inta[2][4]?=?{1,2,3,4,
5,,4,5,6};
return0;
}該代碼的表現(xiàn)形式如下圖:
??右邊的a[ 0 ] [ 0 ]??這些數(shù)據(jù)對(duì)應(yīng)的是二維數(shù)組中(每個(gè)數(shù)組中的元素)。
了解了二維數(shù)組在內(nèi)存中的表現(xiàn)形式:
--我們開始引入數(shù)組指針的概念:
2.1)??顧名思義:數(shù)組指針就是指向數(shù)組的指針,根據(jù)復(fù)雜類型的確認(rèn) ,數(shù)組指針形式為 ?int(*p)[ 3 ]; 表明該指針指向了(有三個(gè)int型數(shù)據(jù))的數(shù)組 ,那么該數(shù)組名 a 就是數(shù)組a[ 0 ]的首地址,即(&a[ 0 ],也可寫為a)
---(這點(diǎn)和一維數(shù)組的數(shù)組名相同----->都是數(shù)組首元素的首地址)
(***注意:該 圖形兩塊不同的區(qū)域代表兩個(gè)不同的數(shù)組----后面跟著的是每一個(gè)數(shù)組里面包含的元素)
2.2)?a[ 0 ]這個(gè)數(shù)組名 代表了a[ 0 ]這個(gè)數(shù)組里面 a[ 0 ][ 0 ]的值的地址, 即----> a[ 0 ] == &a[ 0 ][ 0 ] ? -
對(duì)于a[ 0 ]---- 這里可理解(不可畫等號(hào))為a[ 0 ] 是一個(gè)指針 ( 因?yàn)閿?shù)組名是該首元素a[ 0 ][ 0 ]的地址嘛,既然是地址,就必須用指針來接收 )。
2.3)p = a ;就是指向了a[ 0 ]這個(gè)數(shù)組的首地址。 也可寫成&a[ 0 ];? 名為二維數(shù)組的行指針
那么如果對(duì)?p?進(jìn)行?p +1?操作,就表示地址移動(dòng)到下一行(移動(dòng)了sizeof(int)*4 = 16個(gè)字節(jié)),就是下一個(gè)數(shù)組的地址 -- 如上圖所示
技巧 - - ?/ * 我們將二維數(shù)組依次看作一維數(shù)組逐步分析 * /
2.4)所以?p = a ?+ i?; ? 等價(jià)于 ??p = &a[ 0 ] + i
這是行指針的概念,如果對(duì) p 取 * 運(yùn)算符,表示取出 p 指向的內(nèi)容,而 p 指向的的內(nèi)容就是a[ 0 ], ? ??行指針用來確定對(duì)哪一個(gè)數(shù)組的值進(jìn)行操作,? 直觀的就是,這這個(gè)二維數(shù)組中, 選 a[ 0 ], a[ 1 ]這兩個(gè)之中的其中一個(gè)進(jìn)行操作),
2.5)*p ?= *(&a[ ?0 ])=a[ 0 ],* (p + i) = a[ i ](c語(yǔ)言中,方括號(hào)[ ]運(yùn)算符和*()運(yùn)算符一致,可互換)
a[ 0 ] ?+ i ? == ?&a[ 0 ][ 0 ] + i就是列指針的概念(對(duì)數(shù)組的每一個(gè)元素進(jìn)行操作),對(duì)a[ 0 ]這個(gè)數(shù)組里面的元素地址 + i ,指到相應(yīng)元素a[ 0 ][ i ]的地址 ?即&a[ 0 ][ i ]我們已經(jīng)知道a[ 0 ]就是a[ 0 ][ 0 ]的值的地址,即&a[ 0 ][ 0 ]? ?所以如果對(duì)a[ 0 ]取?* 運(yùn)算符,得到的就是a[ 0 ][ 0 ]的值。
即*(?a[ 0 ]+ i)= a[ 0 ][ i ]
--------------------------------------看了這些不知道對(duì)各位朋友有無幫助。
下面我對(duì)二級(jí)指針做一個(gè)畫圖分析: 讓我們更深一步的理解二維數(shù)組指針
---------------------------------------------------------------------------------------------------
在文中有什么不對(duì)或者需要改進(jìn)的地方,請(qǐng)各位朋友對(duì)我給出寶貴的意見和建議
總結(jié)
以上是生活随笔為你收集整理的c语言二维数组代码,C语言之二维数组(示例代码)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 建设银行属于什么性质银行?
- 下一篇: c语言程序stm8s,stm8s的c语言