利用指標循序存取陣列元素(n像是會移動的)

練習嘗試運用指標處理陣列。
陣列範圍為v[5](相當於有0~4一共5個int),在C語言的陣列位址規則中,V[5]空間是不存在的(超出範圍不可存取),但是陣列位址是有的,也就是超出範圍且不可存取的V[5]位置中會有記憶體位址可以取得該址
在練習中的迴圈條件是當int *n是取址&v[5],迴圈停止。

感覺n就像是會移動的(利用++n),如下:
V[0]  V[1]  V[2]  V[3]  V[4]
   n       n1     n2      n3     n4        ++n
所以++n以後n就會感覺像是一直向右移動了。

#include<stdio.h>
int main(){
int v[5]={2,5,3,1,4};
printf("原始值\n");
for(int i=0;i<5;++i){
printf("%3d ",v[i]);
}
printf("\n\n");

int* n;
for(n=v;n!=&v[5];++n){
*(n)=*(n)+10;
}

printf("全部加10\n");
for(int i=0;i<5;++i){
printf("%3d ",v[i]);
}
printf("\n");
return 0;
}

不同用途與指令搭配的寫法可以有很多變化。
#include<stdio.h>
int main(){
int v[5]={2,5,3,1,4};
int* n=v;
printf("%d\n",*n++);
printf("%d\n",*n++);
printf("%d\n",*n++);
printf("%d\n",*n++);
printf("%d\n",*n++);
return 0;
}

搭配while更讓人驚豔
#include<stdio.h>
int main(){
int v[5]={2,5,3,1,4};
int* n=v;
while(n!=v+5){
printf("%d\n",*n++);
}
return 0;
}


留言