(基礎)指針的引用調用,通過指針進行數組的輸入輸出,指針與++

值:     a[i]    *(a+i)

地址:  &a[i]     a+i


指針的賦值

int *p1,*p2,a=2,b=3;

p1=&a;//p1指向a

p2=&b;

p1=p2//將p1亦指向p2的指向(即b)

*p1=*p2//將p1指向的a賦值爲p2指向的b(即a=b)


int p1=3,*p2,a=2;

p2=&a;

p1=*p2;//p1=p2指向的內容的值,即a,即2;

*p2=p1;//p2指向的內容的值賦爲p1,即a=p1;





用指針進行數組的輸入輸出

輸入一:

int *p,i,a[10];

p=a;

for(i=0;i<10;i++)

scanf("%d",p++);//p=a,p表示的是a[0]的地址,即&a[0];*p表示的是a[0]


輸入二:

int *p,a[10];

for(p=a;p<(a+10);p++)

scanf("%d",p);


輸入三:

int a[10],i;

for(i=0;i<10;i++)

scanf("%d",a+i);


輸出一:

p=a;

for(i=0;i<10;i++)

pritnf("%d",*p++);//*p++即*(p++)


輸出二:

for(p=a;p<(a+10);p++)

scanf("%d",*p);


輸出三:

for(i=0;i<10;i++)

scanf("%d",*(a+i));


若想輸出a數組的前100個數,可以用指針的方式提高速度

法一:

p=a;

while(p<a+100)

printf("%d ",p++);

法二:

p=a;

while(p<a+100)

{printf("%d ",*p);p++;}





若進行了p++,再用時需要初始化一下,如下:

int *p,i,a[10];

p=a;

for(i=0;i<10;i++)

scanf("%d",p++);

for(i=0;i<10;i++)

printf("%d ",*p++);

則輸出與輸入的數並不一一對應,因爲,scanf進行完後p已經指向了a[9],應

int *p,i,a[10];

p=a;

for(i=0;i<10;i++)

scanf("%d",p++);

p=a;

for(i=0;i<10;i++)

printf("%d ",*p++);


指針與++

p++;*p               a[1]

*(p++)與*p++        a[0],a[1]…...//*和++同優先級,結合方向爲從右向左;先*p,再++

*(++p)   a[1],a[2]……//先++p,再*

++(*p)   元素a[0]的值++

--和++同理




written by Sneexy

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章