掌握多維數(shù)組和多級(jí)指針,有以下幾個(gè)要點(diǎn)。
1)要弄清楚數(shù)組的本質(zhì),數(shù)組和指針要靈活的轉(zhuǎn)換。
2)弄清楚是幾維數(shù)組,幾級(jí)指針,然后搞明白是指向行的,還是指向列的。
3)把多維數(shù)組抽象成一維的。
以下是一個(gè)實(shí)例,主要用來(lái)幫助理解數(shù)組指針的概念。
#include <stdio.h>int main(){ int a[][3] = {1,2,3,4,5,6}; int (*ptr)[3] = a; PRintf(" a=%p, ptr=%p/n",a,ptr); printf(" a+1=%p, ptr+1=%p/n",a+1,ptr+1); printf("*ptr=%p, *ptr+1=%p/n",*ptr,*ptr+1); printf("(*ptr)[0]=%d, (*ptr)[1]=%d/n",(*ptr)[0],(*ptr)[1]); ptr++; printf("(*ptr)[0]=%d, (*ptr)[1]=%d/n",(*ptr)[0],(*ptr)[1]); return 0;}某次的運(yùn)行結(jié)果為:
共打印了五行信息
第一行:都表示首地址,簡(jiǎn)記為x
第二行:a和ptr都是指向行的,所以a+1和ptr+1都表示指向下一行。所以地址為x+4*3,即每行四個(gè)元素,每個(gè)元素占四個(gè)字節(jié)。
第三行:ptr是二級(jí)指針,所以*ptr表示地址,是指向列的,所以*ptr+1表示指向下一個(gè)元素,地址為x+4。
第四行:(*ptr)[1],表示列對(duì)應(yīng)的元素。
第五行:指針移動(dòng)了一行。
|
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注