標(biāo)題: C語(yǔ)言之形參和實(shí)參淺議1 [打印本頁(yè)]

作者: 找人PK    時(shí)間: 2019-2-3 05:23
標(biāo)題: C語(yǔ)言之形參和實(shí)參淺議1
C語(yǔ)言之形參和實(shí)參

1).定義
形參:形式參數(shù)。
     就是定義函數(shù)的時(shí)候,寫在函數(shù)名小括號(hào)后面的參數(shù)叫形參
實(shí)參:實(shí)際參數(shù)。
    就是調(diào)用函數(shù)的時(shí)候,調(diào)用函數(shù)時(shí)寫在函數(shù)名小括號(hào)后面的參數(shù)就叫實(shí)參

2).注意項(xiàng)
       a.實(shí)參既可以放常量,也可以放變量,還可以放表達(dá)式;形參:它其實(shí)可以理解為就是這個(gè)函數(shù)的局部變量
       b.實(shí)參給形參傳值,其實(shí)只是相當(dāng)于給函數(shù)的形參(局部變量)賦值
       c.值傳遞:在函數(shù)內(nèi)改變了形參的值,不會(huì)影響到外面的實(shí)參
       d.在C語(yǔ)言中,除了數(shù)組以外,所有的類型作為實(shí)參傳遞都是值傳遞
二 有參函數(shù)
帶參數(shù)的函數(shù)定義語(yǔ)法:
void  函數(shù)名(類型 參數(shù)名)
{
                  函數(shù)體;
}

應(yīng)用場(chǎng)景:當(dāng)函數(shù)完成某個(gè)功能必須要外界傳入一些數(shù)據(jù)的時(shí)候,就用參數(shù)
tips:代碼例子如下

#include <stdio.h>
/* 判斷一個(gè)數(shù)是不是水仙花數(shù)*/

void isFlower(int num)
{
    int bai = num / 100;
    int shi = num / 10 % 10;
    int ge = num % 10;
    //如果 百*百*百 + 十*十*十 + 個(gè)*個(gè)*個(gè) 等于這個(gè)數(shù)

    if( bai*bai*bai + shi*shi*shi + ge*ge*ge == num){
        //就是水仙花數(shù)
        printf("%d是水仙花數(shù)\n",num);
    }else{

        //    否則 不是水仙花數(shù)
        printf("%d不是水仙花數(shù)\n",num);
    }
}

//2、寫一個(gè)函數(shù),求指定某個(gè)數(shù)到某個(gè)數(shù)之間所有的整數(shù)的累加和

//如:3到8,算出3+4+5+6+7+8 = ?

void getN2MSum(int n,int m)
{
    int sum = 0;
    if(n < m){ //n比m小的情況
        for (int i=n; i<=m; i++) {
            sum += i;
        }
    }else{ //m比n小的情況
        for (int i=m; i<=n; i++) {
            sum += i;
        }
    }
    printf("%d到%d之間的和為%d\n",n,m,sum);
}

// 3、用函數(shù)來(lái)實(shí)現(xiàn)判斷一個(gè)年份是不是閏年

void isRunYear(int year)
{
    if( year % 400 ==0  || (year%4==0 && year %100!=0) )
{

        printf("%d年是閏年\n",year);
    }else{
        printf("%d年是平年\n",year);
    }
}

int main(int argc, const char * argv[])
{
    //調(diào)用語(yǔ)法:函數(shù)名(實(shí)參列表);
    isFlower(200);
    getN2MSum(100,1);//10+11+12....+20
    isRunYear(1900);
    return 0;
}

51最常用實(shí)參延時(shí)
void delay(void)//固定時(shí)間
{
        unsigned int i,j ;
        for(i=0;i<100;i++)
        {
                for(j=0;j<800;j++)         ;               
        }
}
51最常用形參延時(shí)
void delay(uint k)//可變時(shí)間
{
        unsigned int i,j ;
        for(i=0;i<k;i++)
        {
                for(j=0;j<800;j++) ;
}
}

LCD12864帶指針多形參函數(shù)
void Display(uchar zhuoyou,  uchar ye,  uchar shuonie,  uchar *p)
{
        uchar i;
        Select_zhuoyou(zhuoyou);
        Set_ye(ye);
        Set_shuonie(shuonie);
        for(i=0;i<16;i++)
        {
                wridat(p[i]);
        }
        Set_ye(ye+1);
        Set_shuonie(shuonie);
        for(i=0;i<16;i++)
        {
                wridat(p[i+16]);
        }                               
}
先到此,后續(xù).............


作者: zhengchong60    時(shí)間: 2019-2-5 03:59
學(xué)習(xí)了,謝謝分享
作者: shuisheng60    時(shí)間: 2019-2-8 13:20
不錯(cuò),也來(lái)學(xué)習(xí)了
作者: lindeijun1    時(shí)間: 2020-2-22 22:57
謝謝樓主分享。。
作者: zwf33    時(shí)間: 2021-1-8 09:34
看懂了,謝謝




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1