1. 程式人生 > >c語言之函式引數傳遞之陣列篇

c語言之函式引數傳遞之陣列篇

在VC中寫程式都習慣了,一般陣列作為函式實參時,最常用的方法就是引用和指標的方法,但是到C語言中就沒有引用了,還有一種比較常用的方法:

#include <stdio.h>


void sort(int array[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k
=i;
for(j=i+1;j<n;j++)
if(array[j]<array[k]) k=j;
t
=array[k];array[k]=array[i];array[i]=t;

}


}


int main(void)
{
int a[10],i;
printf(
"enter the array
");
for(i=0;i<10;i++)
scanf(
"%d",&a[i]);
sort(a,
10);
printf(
"the sorted array: ");
for(i=0;i<10;i++)
printf(
"%d ",a[i]);
}





}

這是譚浩強書上的一段例子,選擇法對陣列進行排序,據說這個演算法要比冒泡法快,有機會用vtune測下,這裡比較關鍵是形參的寫法 int array[],實際上就相當於指標或引用。

下面是關於區域性變數和全域性變數的東東

有時在程式設計中希望某些外部變數只限於被本檔案引用,而不能被其他檔案引用。這時可以在定義外部變數時加一個static宣告。

 (static)內部函式   

  如果在一個原始檔中定義的函式只能被本檔案中的函式呼叫,而不能被同一源程式其它檔案中的函式呼叫, 這種函式稱為內部函    
數。定義內部函式的一般形式是: static 型別說明符 函式名(形參表) 例如:   
static int f(int a,int b) 內部函式也稱為靜態函式。但此處靜態static 的含義已不是指儲存方式,而是指對函式的呼叫範圍只侷限於本檔案。 因此在不同的原始檔中定義同名的靜態函式不會引起混淆。   

外部函式   
  外部函式在整個源程式中都有效,其定義的一般形式為: extern 型別說明符 函式名(形參表) 例如:   
extern int f(int a,int b)如在函式定義中沒有說明extern或static則隱含為extern。在一個原始檔的函式中呼叫其它原始檔中定義的外部函式時,應 用extern說明被調函式為外部函式。例如:   
F1.C (原始檔一)   
main()   
{   
extern int f1(int i); /*外部函式說明,表示f1函   
數在其它原始檔中*/   
……   
}   
F2.C (原始檔二)   
extern int f1(int i); /*外部函式定義*/   
{   
……   
}