2 回答

TA貢獻(xiàn)883條經(jīng)驗 獲得超454個贊
那個printf語句,應(yīng)該并不是輸出第三行的第i個字符。
ptr是個char**指針沒錯, ptr一開始指向str數(shù)組中的第一個元素,注意這個數(shù)組元素類型是char指針,指向那幾個字符串。
ptr+2 就得到str數(shù)組第一個元素后數(shù)兩個的那個指針(也就是指向"third")。注意:得到的仍然是個char**的指針類型。
對一個char**指針類型應(yīng)用下標(biāo)操作符,相當(dāng)于得到相對ptr指針偏移后的指針,也就是說:
(ptr+2)[0] ?得到的還是ptr+2指針
(ptr+2)[1] ?得到的還是ptr+2指針后面位置的指針,也就是相當(dāng)于ptr+3,那么就指向了str數(shù)組的第4個元素"fourth"
(ptr+2)[2] ?同理,得到的是ptr+2指針后面第二個位置的指針,也就是相當(dāng)于ptr+4,那么就指向了str數(shù)組的第5個元素"fifth"
所以,for循環(huán)中的printf語句分別打印出的應(yīng)該是"third",?"fourth",?"fifth"這三個字符串,當(dāng)然它們?nèi)齻€是連著打出的?"thirdfourthfifth"

TA貢獻(xiàn)1條經(jīng)驗 獲得超0個贊
#?include?<stdio.h> ???????void?main(?)? ?????????{ ???????????char??*str[]={"first",?"second",?"third",?"fourth",?"fifth"};??//創(chuàng)建一個一維指針數(shù)組; ???????????char??**ptr=str;??//定義一個二級指針指向?str,也就是把str的每一個元素當(dāng)作了一個指針 ???????????int?i; ???????????for(i=0;i<3;i++) ??????????????printf("%s",?(ptr+2)[i]?);??//?輸出第三行的第?i?個字符 ??????????}
- 2 回答
- 0 關(guān)注
- 1534 瀏覽
添加回答
舉報