Adsmt寫到:
還有 array pointers 和 pointers to array
array pointers, 這是比較常用的方法:
char *ar[10];
for( i = 1; i <= 10; i++)
ar[i-1] = (char *)malloc(sizeof(char)*i);
一個「陣列指標」的蓋念,就是由指標構成的陣列,所以每一個指標都可以指向一個「不等長度」的記憶體區段,這在使用上會比宣告固定的二維陣列靈活得多。
pointers to arrays 就是相反的概念了:
int (*abc)[10];
abc = (int (*)[])malloc(sizeof(int) * 5 * 10);
陣列的元素長度固定,但陣列數量不固定。
這兩個的差別,如果以中文來說的話,前者就是「指標的陣列」;後者則為「指向陣列群的指標群」。
舉例來說,前者相當於去訂做箱子,老闆叫你去訂做十個,但大小由你決定,每個箱子可以完全不同。
後者則是你去買箱子,老闆說他只剩下一種箱子,但數量很多,因此他問你需要多少個。
[Adsmt 在 2010-1-27 11:42 AM 作了最後編輯]