掌握多維數組和多級指針,有以下幾個要點。
1)要弄清楚數組的本質,數組和指針要靈活的轉換。
2)弄清楚是幾維數組,幾級指針,然后搞明白是指向行的,還是指向列的。
3)把多維數組抽象成一維的。
以下是一個實例,主要用來幫助理解數組指針的概念。
#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;}某次的運行結果為:
共打印了五行信息
第一行:都表示首地址,簡記為x
第二行:a和ptr都是指向行的,所以a+1和ptr+1都表示指向下一行。所以地址為x+4*3,即每行四個元素,每個元素占四個字節。
第三行:ptr是二級指針,所以*ptr表示地址,是指向列的,所以*ptr+1表示指向下一個元素,地址為x+4。
第四行:(*ptr)[1],表示列對應的元素。
第五行:指針移動了一行。
新聞熱點
疑難解答