c语言中参数的传递方式是,C语言函数的参数及传递方式
1.形式參數(shù)和實際參數(shù)
1.1形式參數(shù)
形參出現(xiàn)在被調(diào)函數(shù)當中,在整個函數(shù)體內(nèi)都可以使用。形參在定義時編譯系統(tǒng)并不分配存儲空間,只有在調(diào)用該函數(shù)時才分配內(nèi)存單元。調(diào)用結(jié)束內(nèi)存單元被釋放,故形參只有在函數(shù)調(diào)用時有效,調(diào)用結(jié)束時不能再使用。
1.2實際參數(shù)
實參出現(xiàn)在主調(diào)函數(shù)當中,當函數(shù)調(diào)用時,朱調(diào)函數(shù)把實參的值傳送給被調(diào)函數(shù)的形參,從而實現(xiàn)函數(shù)間的數(shù)據(jù)傳遞。傳遞方式有兩種:值傳遞和地址傳遞方式。
2.變量作為函數(shù)參數(shù)
當形參定義為變量時,實參可以是常量、變量和表達式,這種函數(shù)間的參數(shù)傳遞為值傳遞方式。值傳遞的特點是參數(shù)的“單向傳遞”;
int swap(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
return 0;
}
int main (void){
int a=3,b=4;
swap(a,b);
}由于是值傳遞,單向傳遞,并不會改變a,b的值。
3.數(shù)組作為函數(shù)參數(shù)
3.1數(shù)組元素作為函數(shù)參數(shù)
數(shù)組元素又稱為下標變量,它具有普通變量的一切性質(zhì),因此數(shù)組元素作為函數(shù)的實參進行數(shù)據(jù)傳遞是與普通變量沒有任何區(qū)別,也是值傳遞
int swap(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
return 0;
}
int main (void){
int a[]={3,4};
swap(a[0],b[0]);
}
同樣是值傳遞并不會改變a[0]的值。
3.2一維數(shù)組名作為函數(shù)參數(shù)
數(shù)組名是一個地址,是數(shù)組的首地址,因此用數(shù)組名作為函數(shù)的參數(shù)進行數(shù)據(jù)傳遞時,執(zhí)行的是地址傳遞方式。所謂地址傳遞,顧名思義實參傳遞的不是數(shù)據(jù)本身,而是數(shù)據(jù)存在的地址。函數(shù)調(diào)用時,把數(shù)組名即數(shù)組的首地址作為實參傳遞給形參(必須是可接受地址的數(shù)組名或者指針變量),形參數(shù)組名取得首地址后就有了實在的數(shù)組,這時實質(zhì)上實參和形參是同一個數(shù)組,指向同一段存儲空間,實參的改變就是對形參的改變,所以傳址方式可看成是數(shù)據(jù)進行了“雙向傳遞”。
3.3數(shù)組指針,即數(shù)組元素的地址作為函數(shù)參數(shù)
由于數(shù)組元素的地址的本質(zhì)仍然為地址,所以屬于地址傳遞方式。
int swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
return 0;
}
int main (void){
int arr[] = {1,2};
int *a = &arr[0];
int *b = &arr[1];
swap(a,b);
}
重點:
數(shù)組元素(下標變量)作為函數(shù)的參數(shù)進行的數(shù)據(jù)傳遞是值傳遞方式,數(shù)組名(數(shù)組首地址)、數(shù)組元素的地址(&arr[0])作為函數(shù)參數(shù)進行的數(shù)據(jù)傳遞是地址傳遞方式。
實參為數(shù)組名是,形參接收時可以有三種形式:帶下標的數(shù)組名(arr[0])。不帶下標的數(shù)組名(arr)、可接收地址值的指針變量名(*a)。由于是參數(shù)組和形參數(shù)組都指向同一段內(nèi)存單元,故它們操作的是同一批數(shù)據(jù),所以形參的改變就是改變了實參中的數(shù)據(jù)。
原文:http://blog.csdn.net/qq_30351805/article/details/51344316
總結(jié)
以上是生活随笔為你收集整理的c语言中参数的传递方式是,C语言函数的参数及传递方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于jsp+mysql的JSP在线水果销
- 下一篇: HTML+CSS+JS实现 ❤️Thre