如果繼續(xù)作將p3=&p1,則將p1的地址傳遞給指針變量p3,*p3就是p1。用p3來(lái)表示一維數(shù)組的各元素,只需要將用p1表示的數(shù)組元素*(p1+i)中的p1換成*p3即可,表示為*(*p3+i)。
同樣,對(duì)二維數(shù)組b來(lái)說(shuō),b[i]表示第i行首地址,將其傳遞給指針變量p2,使其指向該行。
該行的元素用p2表示為*(p2+i)。若作p3=&p2,則表示p3指向p2,用p3表示的二維數(shù)組第i行元素為:*(*p3+i)。這與程序中的表示完全相同。
運(yùn)行程序:
[例6-28]利用指向指針的指針變量對(duì)二維字符數(shù)組的訪問(wèn)。
#include
#include
main()
{
int i;
staticcharc[][16]={"clanguage","fox","computer","homepage"};
/*二維字符數(shù)組*/
static char *cp[]={c[0],c[1],c[2],c[3]};指/*針數(shù)組*/
static char **cpp;/*指向字符指針的指針變量*/
cpp=cp;/*將指針數(shù)組的首地址傳遞給指向字符指針的指針變量*/
for(i=0;i<4;i++)/*按行輸出字符串*/
printf("%s\n",*cpp++);
printf("-----------\n");
for(i=0;i<4;i++)/*按行輸出字符串*/
{
cpp=&cp[i];
printf("%s\n",*cpp);
}
}
程序中需要注意的是,執(zhí)行cpp=cp是將指針數(shù)組的首地址傳遞給雙重指針,所以*(cpp+i)表示第i行的首地址,而不是cpp+i。在程序設(shè)計(jì)時(shí)一定分清。
希望與更多計(jì)算機(jī)等級(jí)考試的網(wǎng)友交流,請(qǐng)進(jìn)入計(jì)算機(jī)等級(jí)考試論壇
更多信息請(qǐng)?jiān)L問(wèn):考試吧計(jì)算機(jī)等級(jí)考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |