本程序nzp函數形參數組a沒有給出長度,由n 動態確定該長度。在main函數中,函數調用語句為nzp(b,5),其中實參5將賦予形參n作為形參數組的長度。
d. 多維數組也可以作為函數的參數。在函數定義時對形參數組可以指定每壹維的長度,也可省去第壹維的長度。因此,以下寫法都是合法的。
int MA(int a[3][10])
或
int MA(int a[][10])。
8.8 局部變量和全局變量
在討論函數的形參變量時曾經提到,形參變量只在被調用期間才分配內存單元,調用結束立即釋放。這壹點表明形參變量只有在函數內才是有效的,離開該函數就不能再使用了。這種變量有效性的範圍稱變量的作用域。不僅對於形參變量,C語言中所有的量都有自己的作用域。變量說明的方式不同,其作用域也不同。C語言中的變量,按作用域範圍可分為兩種,即局部變量和全局變量。
8.8.1 局部變量
局部變量也稱為內部變量。局部變量是在函數內作定義說明的。其作用域僅限於函數內, 離開該函數後再使用這種變量是非法的。
例如:
int f1(int a) /*函數f1*/
{
int b,c;
……
}
a,b,c有效
int f2(int x) /*函數f2*/
{
int y,z;
……
}
x,y,z有效
main()
{
int m,n;
……
}