數組名即首地址。調用時將實參數組首址賦給形參數組名,雙方共享同一記憶體區塊。圖示:
實參 a 首址 2000 → 形參 b 獲 2000 → a[i] 與 b[i] 物理單元完全重疊。
因此形參修改內容,實參同步變化,並非雙向值傳遞,而是同一物理實體。
float aver(float a[5]) {
float s = a[0]; for (int i=1;i<5;i++) s+=a[i]; return s/5;
}
main() { float sco[5], av; scanf 5 分; av=aver(sco); }
void nzp(int a[5]) { for(i=0;i<5;i++) if(a[i]<0) a[i]=0; }
main() { int b[5]; 輸入; nzp(b); /* b 中負值變 0 */ }
實參 b 初值與終值不同,證明共享記憶體。
a[8] 實參 b[5] 會讀寫越界)。void nzp(int a[]) 或 void nzp(int a[], int n) 動態指定長度。int MA(int a[][10])。