c语言函数调用的三种方式是什么
本文操作環(huán)境:Windows7系統(tǒng)、C11版、Dell G3電腦。
在C語言中函數(shù)調(diào)用的三種方式分別是:傳值調(diào)用,引用調(diào)用和傳地址調(diào)用。
1、傳值調(diào)用
傳值調(diào)用,就是把一個(gè)變量的值傳遞給函數(shù)的形式參數(shù),實(shí)際就是用變量的值來新生成一個(gè)形式參數(shù),形參運(yùn)算后在把值返回。
函數(shù)中改變的值是不能影響到外界的,因而在函數(shù)里對(duì)形參的改變不會(huì)影響到函數(shù)外的變量的值。
下面通過代碼示例來理解一下:
#include<stdio.h>  
void myswap(int x, int y)  
{  
    int t;  
    t=x;  
    x=y;  
    y=t;  
}  
int main()  
{  
    int a, b;  
    printf("請(qǐng)輸入待交換的兩個(gè)整數(shù):");  
    scanf("%d %d", &a, &b);  
    myswap(a,b);  //作為對(duì)比,直接交換兩個(gè)整數(shù),顯然不行  
    printf("調(diào)用交換函數(shù)后的結(jié)果是:%d 和 %d\n", a, b);  
    return 0;  
}
登錄后復(fù)制
運(yùn)行:
【視頻教程推薦:C語言教程】
解析:
沒有交互成功原因是:使用傳值調(diào)用,只在形參上改變了數(shù)值,沒有在實(shí)參上改變數(shù)值。
2、傳地址調(diào)用
傳地址調(diào)用,就是將變量的地址直接傳入函數(shù),它把一個(gè)變量的地址賦給函數(shù)里形式參數(shù)的指針,使指針指向真實(shí)的變量的地址,因?yàn)閷?duì)指針?biāo)傅刂返膬?nèi)容的改變能反映到函數(shù)外,也就是能改變函數(shù)外的變量的值。
下面通過代碼示例來理解一下:
#include<stdio.h>  
void myswap(int *p1, int *p2)  
{  
    int  t;  
    t=*p1;  
    *p1=*p2;  
    *p2=t;  
}  
int main()  
{  
    int a, b;  
    printf("請(qǐng)輸入待交換的兩個(gè)整數(shù):");  
    scanf("%d %d", &a, &b);  
    myswap(&a,&b);  //交換兩個(gè)整數(shù)的地址  
    printf("調(diào)用交換函數(shù)后的結(jié)果是:%d 和 %d\n", a, b);  
    return 0;  
}
登錄后復(fù)制
運(yùn)行:
解析:
交互成功的原因是:使用傳地址調(diào)用,利用指針改變了原來的地址,所以實(shí)參就交換了。
3、引用調(diào)用
引用調(diào)用實(shí)際是通過指針來實(shí)現(xiàn)的,把變量的引用傳入函數(shù);能達(dá)到使用地址調(diào)用的效果,可是使用方式如傳值調(diào)用,函數(shù)可以對(duì)其值進(jìn)行修改。
下面通過代碼示例來理解一下:
#include<stdio.h>
void myswap(int &x, int &y)
{
    int t;
    t=x;
    x=y;
    y=t;
}
  
int main()
{  
    int a, b;
    printf("請(qǐng)輸入待交換的兩個(gè)整數(shù):");
    scanf("%d %d", &a, &b);
    myswap(a,b);  //注意:這里調(diào)用方式與傳值調(diào)用一樣,直接以變量a和b作為實(shí)參交換
    printf("調(diào)用交換函數(shù)后的結(jié)果是:%d 和 %d\n", a, b);
    return 0;
}
登錄后復(fù)制
運(yùn)行:
解析:
交互成功的原因是:使用引用調(diào)用,引用是直接改變兩個(gè)實(shí)參變量a,b的值,所以就交換了。
以上就是c語言函數(shù)調(diào)用的三種方式是什么的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注風(fēng)君子博客其它相關(guān)文章!
總結(jié)
以上是生活随笔為你收集整理的c语言函数调用的三种方式是什么的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 上古卷轴5莱迪亚不见了怎么找
 - 下一篇: \Grokking Algorithms