二級指針與指針數(shù)組的關(guān)系 二級指針維護創(chuàng)建的數(shù)組是什么意思?
二級指針維護創(chuàng)建的數(shù)組是什么意思?準確的說二維數(shù)組名是兩個正指向常量的二級指針,因為它我總是朝固定設(shè)置的地址-指向一列數(shù)組的首地址。舉個簡單的例子,charta[5][5],aampa[0],而指針數(shù)
二級指針維護創(chuàng)建的數(shù)組是什么意思?
準確的說二維數(shù)組名是兩個正指向常量的二級指針,因為它我總是朝固定設(shè)置的地址-指向一列數(shù)組的首地址。舉個簡單的例子,charta[5][5],aampa[0],
而指針數(shù)組名也是打向常量二級指針,是因為指針數(shù)組名總是會對準數(shù)組的第一個元素。舉例子,chart*a[5],aampa[0].
這兩個的同樣區(qū)別是a[5][5]占25個字節(jié),而a[5]占字節(jié)數(shù)是各個元素打向字符串的總長度
二維數(shù)組如何用指針表示?
二維數(shù)組也可以作成是指針的指針,b[][]**b;比如b
二維數(shù)組如何用指針表示?
[5]它是一個2行5列的二維數(shù)組,也可以看成是二級指針,三級存放的是行指針,接著每個行指針里面其實又是朝了5個列元素。*(*(bi)j),*(bi)是先取行指針,然后把j偏移到所要的列,然后把*取值就能得到i行j列的數(shù)據(jù)了。二維數(shù)組名為什么不能直接賦值給二級指針?
——又為何可以不int(*p)[n]a[i],而又不能pa[i]賦值(0im)
p是什么?p是需要是一個指針,貯放了一個包涵n個整型數(shù)據(jù)的數(shù)組(先不談叫他數(shù)組甲)的地址,此時此刻我們是可以其實數(shù)組甲,是一個有很多個傳說中的數(shù)組甲這樣的元素組成的數(shù)組(我叫他數(shù)組乙,很看樣子,乙是個二維數(shù)組,數(shù)組的數(shù)組)的首元素,數(shù)組甲的地址那是數(shù)組乙的首元素的地址,因為p就這個可以當(dāng)做數(shù)組乙的名字來變量定義(二維數(shù)組名,也就是a)。
現(xiàn)在a是二維數(shù)組,先把a降維,看成是有m個元素橫列的一維數(shù)組。那么a[0]是什么?是a這個現(xiàn)在被我暫時雷死一維的數(shù)組的首元素。對首元素取地址,那就是數(shù)組名。所以我不是a[0]。以此類推,aia[i]。那么a[0][0]又是什么?是對a取星以后的a[0]的首元素,也就是數(shù)組名,因此a[0]a[0][0],因為**不是a[0][0]*(*
(ai)j),但是這里ij是0。
因為,p這么大兩個朝數(shù)組的指針,這個可以賦給它a[0]的地址(a的首元素地址,也就是a),paa[0],以此類推,pia[i]。因此你的pa[i]不對,a[i]是降維之后a的第i個元素同時又是個一維數(shù)組名,來表示a[i][0]地址,不能賦給一個對準整型數(shù)據(jù)的指針。而你的p是個對準數(shù)組的指針,變量賦值符號左右端類型完全不同,這上哪能賦值?
你后面這pa[i]語法上是確實不錯,不過是滿讓p指針下移i個位置了,畢竟pia[i](舉例你也賦值pa[0]),你這個不就等同于ppi,也就相當(dāng)于pi。也不是個而且好的寫法。
另外,如果沒有你再定義一個int*q;然后再qa。這是是可以的,a是可以降維也也可以不降維再用。正當(dāng)此時qa[0][0]
——在一維數(shù)組中卻只能用pa,而肯定不能用pa.
在一位數(shù)組里面,你就得那樣的話定義:int*p;這樣的p里面存的是一個整型變量的“坑”的坑號。而二維空間數(shù)組a數(shù)組名不那是他自己首元素的坑的坑號?不過是可以變量pa。
pa意思是的是什么?a其實應(yīng)該是一個地址,你的要再對a取地址,估計應(yīng)該它本身,可是含義完全不同。非形參數(shù)組名都是指針常量,對指針常量取地址那就它本身(或則可沒取不了地址,而且常量可能沒地址)。
你也可以在編譯器里面打看看看下會不會運行錯誤。