指標陣列特性與基礎運用注意要點

指標陣列有一個特性,它可以將不同變數、不同陣列的記憶體位址存取在指標陣列,例如:
int a=1;
int b=10;
int c=100;
int *az[ ]={&a,&b,&c};//取址一般變數不會隱性轉型(陣列才會),一定要打&取址。
printf("%d\n",*az[0]);
//所以*az[0]==a==1;//az[0]==&a=同一個記憶體位址;

int AA[2]={10,15};
int BB[2]={20,25};
int CC[2]={25,30};
int *AAZZ[ ]={AA,BB,CC};//取址陣列隱性轉型,打&取址。
printf("%d\n",AAZZ[1][1]);
//所以*AAZZ[1][1]==AA[2]==15;
//而且*AAZZ[2][0]==CC[0]==25;

當然不同長度的陣列也是可以將它們整理在同一個指標陣列之內,在隨機存取是可以單獨使用,只需避免運用到超出陣列範圍的空間,不過若是循序存取就要相當注意迴圈運用上是否會運用到超出陣列範圍之外造成未定義行為

留言