指針數(shù)組習(xí)題補(bǔ)充
因?yàn)樽罱γΦ囊恢睕](méi)找到機(jī)會(huì)配音(主要是我懶),(而且我本人也不是特別善于言辭,用文字也會(huì)更嚴(yán)謹(jǐn)避免口誤)所以一些想講的習(xí)題發(fā)專欄了。

這種題就記住我經(jīng)常講的a[i]=*(a+i)和&a[i]=a+i
pp是二重指針,可以指向一個(gè)指針變量(賦值為一個(gè)指針變量的地址),p是指針數(shù)組,相當(dāng)于開了3個(gè)指針變量p[0],p[1],p[2],整形數(shù)的指針變量可以指向一個(gè)整形數(shù)(賦值為整形數(shù)的地址),也可以賦值為一個(gè)一維整形數(shù)組中任何一個(gè)元素的地址。
同理二重指針可以 賦值為一個(gè)指針變量的地址,也可以賦值為一個(gè)指針數(shù)組的初地址。
在這個(gè)程序執(zhí)行完畢后p[0]=&a[0],p[1]=&a[4],p[2]=&a[8]。
選項(xiàng)A,pp[0][1]即*((*pp)+1),因?yàn)閜p=p,所以*pp=*p=p[0],*((*pp)+1)=*(p[0]+1)。因?yàn)閜[0]=&a[0]=a,所以*(p[0]+1)=*(a+1)=a[1],正確。
選項(xiàng)B,a[10],a的長(zhǎng)度是12,所以合法的調(diào)用是a[0~11],正確。
選項(xiàng)C,p[3][1],由于p的長(zhǎng)度為3,合法的調(diào)用是p[0~2],數(shù)組越界,選項(xiàng)錯(cuò)誤,答案為C。
選項(xiàng)D,等于*(p[2]+2)=*(&a[8]+2)=*(a+8+2)=a[10],正確。

如何快速的做出這種題呢,其實(shí)就是對(duì)代碼進(jìn)行分析,知道這個(gè)程序要做什么,不用特別在意其執(zhí)行的過(guò)程。
fun函數(shù)就是 給定 字符型指針數(shù)組*s[],整形數(shù)n。通過(guò)二重for循環(huán)(看i和j的范圍,再看下面的比大小,DNA動(dòng)了嗎,這是冒泡排序啊,什么?你不知道?給我好好記?。。┡判?,接下來(lái)我們就要搞清楚最后結(jié)果是升序(從小到大)還是降序(從大到?。?,看里面的if語(yǔ)句,我們知道i一定小于j,如果前面的長(zhǎng)度大于后面,則對(duì)它倆進(jìn)行交換??梢赃@樣想,如果前面大于后面,我們認(rèn)為這不合理,那么最后的結(jié)果一定是小的全在前面,大的全在后面,所以這是一個(gè)升序排序(別背不等號(hào)的方向,一換位置你就懵逼了)。
于是我們?cè)谥骱瘮?shù)輸出的s[0]和s[4]分別是最短和最長(zhǎng)的字符串,輸出結(jié)果是xy,aaaacc