一、數組指標:數組指標就是一個指標,只不過它指向的是一個數組.可以通過如下方式來定義 typedef int Array[5]; //數群組類型Array* m; //數組定義還有一種更為簡潔的寫法:int (*m)[10]; 二、指標數組:所謂的指標數組就是一個數組,只不過數組元素是指標,可以通過如下方式來定義 int* m[10]; 三、數組指標的執行個體
#include <stdio.h> int main() { int a[5] = {1,2,3,4,5}; typedef int(IArray5)[5]; IArray5* n = &a; int (*m)[5] = &a; for(i = 0; i < 5;i ++) { printf("%d \n",a[i]); } for(i = 0; i < 5;i ++) { printf("%d \n",(*m)[i]); } for(i = 0; i < 5;i ++) { printf("%d \n",(*n)[i]); } }
分析列印結果如下 四、所謂二維數組 1.C語言中不存在所謂的二維或者更高維次的數組,因為在記憶體中都是線性分布的,所以都是一維數組.二位元組的數組名代表的就是一個數組指標,只不過這個指標指向的是一個數組.2.二維數組的一個執行個體
#include <stdio.h> int main() { int array[5][5] = { 11,12,13,14,15, 16,17,18,19,20, 21,22,23,24,25, 26,27,28,29,30, 31,32,33,34,35 }; int* p1 = (int*)(&array + 1); int* p2 = (int*)(*(array + 1) + 6); printf("result = %d, %d, %d, %d ,%d \n",(*(*array)),(*(*array) + 4),(*(*(array + 4))),p1[-4],p2[-1]); }