關(guān)于數(shù)組指針和 指針數(shù)組,相信狠很多同學(xué)對(duì)此疑惑過(guò),今天我們來(lái)把他們分個(gè)清楚!
首先,讓我們從字面意義上理解他們:
指針數(shù)組 本質(zhì)呢 是數(shù)組!
數(shù)組指針 本質(zhì)呢 是 指針!
(PS:你可以認(rèn)為后倆字是什么,它本質(zhì)就是什么! 語(yǔ)文的知識(shí)吧?賓語(yǔ)?(*^__^*) )
搞清楚此點(diǎn)之后呢,我們就可以繼續(xù)來(lái)講了,其實(shí)呢,指針數(shù)組本身就是個(gè)數(shù)組,只不過(guò)呢,它里面存放的數(shù)據(jù)類型不是int,也不是char這類基本類型,而是一個(gè)指針類型,說(shuō)白了就是地址,所以叫指針數(shù)組! 記?。菏谴娣胖羔樀臄?shù)組!
那么理解這個(gè)之后,數(shù)組指針也一樣的道理,它呢本質(zhì)是個(gè)指針,只不過(guò)是指向一個(gè)一維數(shù)組的指針,也稱之為“行指針”,前提呢,是這個(gè)一維數(shù)組的長(zhǎng)度和這個(gè)數(shù)組指針的長(zhǎng)度要一致才可以賦值。
下面我們通過(guò)代碼來(lái)理解:
////////////////////////////////////////////////////////////////////////// //Name: 測(cè)試 數(shù)組指針 與 指針數(shù)組 //Author:C語(yǔ)言研究中心(www.sztianhecheng.cn) //time:2015/5/28 ////////////////////////////////////////////////////////////////////////// #include<stdio.h> int fun() { char *p1[10]; // 指針數(shù)組 char (*p2)[10]; //數(shù)組指針 //10個(gè)char變量 char a1[10]={'1','2','3','4','5','6','7','8','9','\0'}; //兩個(gè)長(zhǎng)度為10的一維數(shù)組 char a2[2][10]={{'q','w','e','r','t','y','u','i','o','\0'},{'a','s','d','f','g','h','j','k','l','\0'}}; //將十個(gè)char類型變量的地址依次放到指針數(shù)組里 p1[0]=&a1[0]; p1[1]=&a1[1]; //... p1[8]=&a1[8]; //驗(yàn)證輸出 printf("%c\n",*p1[0]); printf("%c\n",*p1[1]); //... printf("%c\n",*p1[8]); ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// //將一維數(shù)組的地址放到數(shù)組指針里 p2=&a2[0]; printf("%s\n",p2); printf("%s\n",p2+1);//注意此處+1為加一行! return 0; }
怎么樣?能看明白嗎?運(yùn)行結(jié)果如下:
如果您通過(guò)注釋看懂這段代碼后,想必應(yīng)該就清楚數(shù)組指針和 指針數(shù)組的區(qū)別了。
最后我們總結(jié)數(shù)組指針和指針數(shù)組的區(qū)別如下:
1、本質(zhì)不同,一個(gè)是數(shù)組,一個(gè)是指針
2、數(shù)組指針是一個(gè)變量,指針數(shù)組是N(數(shù)組長(zhǎng)度)個(gè)變量
C語(yǔ)言研究中心(www.sztianhecheng.cn)