c 函式引數(總結)
阿新 • • 發佈:2018-11-12
函式引數為兩種:形式引數和實際引數
1.形式引數
形參出現在被調函式當中,在整個函式體內都可以使用。形參在定義時編譯系統並不分配儲存空間,只有在呼叫該函式時才分配記憶體單元。呼叫結束記憶體單元被釋放,故形參只有在函式呼叫時有效,呼叫結束時不能再使用。2.實際引數
實參出現在主調函式當中,當函式呼叫時,主調函式把實參的值傳送給被調函式的形參,從而實現函式間的資料傳遞。傳遞方式有兩種:值傳遞和地址傳遞方式。引數傳遞: 引數傳遞首先要搞清楚是 值傳遞還是地址傳遞,這是極為重要的。若為值傳遞是不能改變實際變數的值是單向傳遞而 地址傳遞則是雙向改變的。
一.值傳遞:
2 .陣列元素作為函式引數。 陣列元素也為值傳遞:#include<stdio.h> void myswap(int x, int y) { int t; t=x; x=y; y=t; } int main() { int a, b; printf("Please enter two integers to be exchanged.:"); scanf("%d %d", &a, &b); myswap(a,b); //作為對比,直接交換兩個整數,顯然不行 printf("The result of calling the exchange function:%d 和 %d\n", a, b); return 0; }
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]);
}
二.地址傳遞。
1.陣列名作為函式引數也傳的是地址。 2. 陣列指標,即陣列元素的地址作為函式引數
3.直接傳入地址。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); }
#include<stdio.h>
void myswap(int &x, int &y)
{
int t;
t=x;
x=y;
y=t;
}
int main()
{
int a, b;
printf("Please enter two integers to be exchanged:");
scanf("%d %d", &a, &b);
myswap(a,b); //直接以變數a和b作為實參交換
printf("The result of calling the exchange function:%d 和 %d\n", a, b);
return 0;
}