C語言之函數(shù)返回值與參數(shù)傳遞案例教程
C語言函數(shù)返回值與參數(shù)傳遞
一:參數(shù)傳遞
C語言的函數(shù)中必不可少的就是參數(shù)傳遞,可以采用傳值和傳指針兩種方式。
1.傳值的形式:只是將參數(shù)值的拷貝傳給函數(shù),并非參數(shù)本體如:
int test(int x,int y) { x=2*y; return x; } int main(void) { int a=0,b=5; printf("%d,%d\n\r",test(a,b),a); return 0; }
運行結(jié)果為:
10,0
即傳值方式只可以將實參傳遞給函數(shù),不可以改變實參本身。
2.傳指針形式:直接傳給函數(shù)的是變量的地址。
如:
int a(int b,int *c) { int i=0; for(i=0;i<4;i++) c[i]=b*i; return 0; } int main(void) { int b=2,c[4],i; a(b,c); for(i=0;i<4;i++) printf("Data is -> %d\n\r",c[i]); return 0; }
運行結(jié)果為:
Data is -> 0
Data is -> 2
Data is -> 4
Data is -> 6
由于被調(diào)函數(shù)在參數(shù)指針的作用域之內(nèi),此時可以直接改變變量的本體。
二:返回值
函數(shù)除了參數(shù)傳遞還有返回值,既可以返回變量值也可以返回地址。
1.返回變量
如:
int a(int b) { int i=5; return 5*b; } int main(void) { int b=2; printf("Data is -> %d\n\r",a(b)); return 0; }
運行結(jié)果
Data is -> 10
2.返回地址
int *test(int b) { int i=0,buf[4]; for(i=0;i<4;i++) buf[i]=b*i; return buf; } int main(void) { int b=2; int *p; int i=0; p=test(b); for(i=0;i<4;i++) printf("%d ,%d \n\r",p[i],test(b)); return 0; }
運行結(jié)果
0 ,1084896256
2 ,1084896256
4 ,1084896256
6 ,1084896256
另外不能返回局部變量地址。
int *buf() { int dad; double buf[3][2]; dad=sizeof(buf); return &dad;//error:由于dad是局部變量,函數(shù)結(jié)束后釋放。 }
到此這篇關(guān)于C語言之函數(shù)返回值與參數(shù)傳遞案例教程的文章就介紹到這了,更多相關(guān)C語言函數(shù)返回值與參數(shù)傳遞內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
數(shù)據(jù)結(jié)構(gòu)與算法中二叉樹子結(jié)構(gòu)的詳解
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)與算法中二叉樹子結(jié)構(gòu)的詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04C語言鏈表實現(xiàn)學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言鏈表實現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-06-06