1. 程式人生 > >指標8(應用指標向函式傳遞陣列)

指標8(應用指標向函式傳遞陣列)

要在函式中使用實引數組元素或改變實引數組元素的值,有三種對應方法
1)實參用陣列名,形參用指標變數。
2)實參用指標變數,形參用陣列名
3)實參和形參都用指標變數
給出一道例題
應用函式與指標,對長度為10的一維陣列進行從小到大排序。

#include<stdio.h>
void sort(int*p,int n)
{int i,j,temp;
 for(i=0;i<n-1;i++)
  { for(j=i+1;j<n;j++)
    {if(*(p+i)>*(p+j))
      {temp=*(p+i);
       *(p+i)=*(p+j);
       *(p+j)=temp;
	  }
    }
  }
}
int main()
{int a[10],*pa,i;
 pa=a;
 printf("Input 10 integer:");
 for(i=0;i<10;i++)
 {scanf("%d",pa++);
 }
 pa=a;//使pa重新指向a [0]
 sort(pa,10);
 for(i=0;i<10;i++)
 {printf("   %d",*pa++);
 }
 return 0;
}

在這裡插入圖片描述

程式採用指標變數作形參和實參。在main函式中,先將陣列a的首地址付給指標變數pa,然後用for迴圈讀入陣列元素值。由於使用pa++,for迴圈結束時pa的值已變成pa+10,不再指向a[0],因此,又第二次使用“p=a;”語句,使pa重新指向a[0]。在函式呼叫時,實參pa將陣列a的首地址傳給形參p,p就指向a[0],*(p+i)也就是a[i]。當然,在函式sort中,也可以用p[i ]和p[j]代替 (p+i)和(p+j)。

下一篇 指標9(指標與字串)