指針數(shù)組與數(shù)組指針
時(shí)間:2018-03-09作者:華清遠(yuǎn)見
一、 指針數(shù)組 定義:指針數(shù)組可以說成是”指針的數(shù)組”,首先這個(gè)變量是一個(gè)數(shù)組,其次,”指針”修飾這個(gè)數(shù)組,意思是說這個(gè)數(shù)組的所有元素都是指針類型,在32位系統(tǒng)中,指針占四個(gè)字節(jié)。 Char *array[5] = {“welcome”,”to”,”wuhan”,”guanggu”,“now”}; //array就是我們定義的一個(gè)指針數(shù)組,它有四個(gè)元素,每個(gè)元素是一個(gè)char *類型的指針,這些指針存放著其對(duì)應(yīng)字符串。 我們可以寫成: Char *(array[5])= {“welcome”,”to”,”wuhan”,”guanggu”,“now”};
這個(gè)指針數(shù)組的長度為20個(gè)字節(jié),因?yàn)槊總(gè)數(shù)組元素里存放的都是一個(gè)指針,指針的長度就是四個(gè)字節(jié)。
數(shù)組里面的每一個(gè)成員都保存著一個(gè)字符串的地址,每個(gè)字符串都存在內(nèi)存的常量區(qū)。 一、 數(shù)組指針 定義:數(shù)組指針可以說成是”數(shù)組的指針”,首先這個(gè)變量是一個(gè)指針,其次,”數(shù)組”修飾這個(gè)指針,意思是說這個(gè)指針存放著一個(gè)數(shù)組的首地址,或者說這個(gè)指針指向一個(gè)數(shù)組的首地址。 首先來定義一個(gè)數(shù)組指針,既然是指針,名字就叫pa char (*pa)[5];
如果指針數(shù)組和數(shù)組指針這倆個(gè)變量名稱一樣就會(huì)是這樣:char *pa[5]和char (*pa)[5],原來指針數(shù)組和數(shù)組指針的形成的根本原因就是運(yùn)算符的優(yōu)先級(jí)問題,所以定義變量是一定要注意這個(gè)問題,否則定義變量會(huì)有根本性差別! pa是一個(gè)指針指向一個(gè)char [5]的數(shù)組,每個(gè)數(shù)組元素是一個(gè)char類型的變量,所以我們不妨可以寫成:char[5] (*pa);這樣就可以直觀的看出pa的指向的類型,不過在編輯器中不要這么寫,因?yàn)榫幾g器根本不認(rèn)識(shí),這樣寫只是幫助我們理解。 既然pa是一個(gè)指針,存放一個(gè)數(shù)組的地址,那么在我們定義一個(gè)數(shù)組時(shí),數(shù)組名稱就是這個(gè)數(shù)組的首地址,那么這二者有什么區(qū)別和聯(lián)系呢? char a[5]; a是一個(gè)長度為5的字符數(shù)組,a是這個(gè)數(shù)組的首元素首地址。既然a是地址,pa是指向數(shù)組的指針,那么能將a賦值給pa嗎?答案是不行的!因?yàn)閍是數(shù)組首元素首地址,pa存放的卻是數(shù)組首地址,a是char 類型,a+1,a的值會(huì)實(shí)實(shí)在在的加1,而pa是char[5]類型的,pa+1,pa則會(huì)加5,雖然數(shù)組的首地址和首元素首地址的值相同,但是兩者操作不同,所以類型不匹配不能直接賦值,但是可以這樣:pa = &a,pa相當(dāng)與二維數(shù)組的行指針,現(xiàn)在它指向a[5]的地址。 這里有個(gè)有意思的話題值得探討一下:平時(shí)我們定義指針不都 是在數(shù)據(jù)類型后面加上指針變量名么?這個(gè)指針pa 的定義怎么不是按照這個(gè)語法來定義的呢?也許我們應(yīng)該這樣來定義pa: int (*)[5] pa; int (*)[5]是指針類型,pa 是指針變量。這樣看起來的確不錯(cuò),不過就是樣子有些別扭。其實(shí)數(shù)組指針的原型確實(shí)就是這樣子的,只不過為了方便與好看把指針變量pa 前移了而已。你私下完全可以這么理解這點(diǎn)。雖然編譯器不這么想。 相關(guān)資訊
發(fā)表評(píng)論
|
全國咨詢電話:400-611-6270,雙休日及節(jié)假日請(qǐng)致電值班手機(jī):15010390966
在線咨詢: 曹老師QQ(3337544669), 徐老師QQ(1462495461), 劉老師 QQ(3108687497)
企業(yè)培訓(xùn)洽談專線:010-82600901,院校合作洽談專線:010-82600350,在線咨詢:QQ(248856300)
Copyright 2004-2018 華清遠(yuǎn)見教育科技集團(tuán) 版權(quán)所有 ,京ICP備16055225號(hào),京公海網(wǎng)安備11010802025203號(hào)