找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2799|回复: 4
收起左侧

C语言之形参和实参浅议1

  [复制链接]
ID:471889 发表于 2019-2-3 05:23 | 显示全部楼层 |阅读模式
C语言之形参和实参

1).定义
形参:形式参数。
     就是定义函数的时候,写在函数名小括号后面的参数叫形参
实参:实际参数。
    就是调用函数的时候,调用函数时写在函数名小括号后面的参数就叫实参

2).注意项
       a.实参既可以放常量,也可以放变量,还可以放表达式;形参:它其实可以理解为就是这个函数的局部变量
       b.实参给形参传值,其实只是相当于给函数的形参(局部变量)赋值
       c.值传递:在函数内改变了形参的值,不会影响到外面的实参
       d.在C语言中,除了数组以外,所有的类型作为实参传递都是值传递
二 有参函数
带参数的函数定义语法:
void  函数名(类型 参数名)
{
                  函数体;
}

应用场景:当函数完成某个功能必须要外界传入一些数据的时候,就用参数
tips:代码例子如下

#include <stdio.h>
/* 判断一个数是不是水仙花数*/

void isFlower(int num)
{
    int bai = num / 100;
    int shi = num / 10 % 10;
    int ge = num % 10;
    //如果 百*百*百 + 十*十*十 + 个*个*个 等于这个数

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

        //    否则 不是水仙花数
        printf("%d不是水仙花数\n",num);
    }
}

//2、写一个函数,求指定某个数到某个数之间所有的整数的累加和

//如: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、用函数来实现判断一个年份是不是闰年

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[])
{
    //调用语法:函数名(实参列表);
    isFlower(200);
    getN2MSum(100,1);//10+11+12....+20
    isRunYear(1900);
    return 0;
}

51最常用实参延时
void delay(void)//固定时间
{
        unsigned int i,j ;
        for(i=0;i<100;i++)
        {
                for(j=0;j<800;j++)         ;               
        }
}
51最常用形参延时
void delay(uint k)//可变时间
{
        unsigned int i,j ;
        for(i=0;i<k;i++)
        {
                for(j=0;j<800;j++) ;
}
}

LCD12864带指针多形参函数
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]);
        }                               
}
先到此,后续.............

评分

参与人数 6黑币 +137 收起 理由
static + 10
zhengchong60 + 15
areyouok + 35
钻牛尖滴刘尖尖 + 12
shuisheng60 + 15
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:473186 发表于 2019-2-5 03:59 | 显示全部楼层
学习了,谢谢分享

评分

参与人数 2黑币 +70 收起 理由
jinsheng7533967 + 35
shuisheng60 + 35

查看全部评分

回复

使用道具 举报

ID:472242 发表于 2019-2-8 13:20 | 显示全部楼层
回复

使用道具 举报

ID:298008 发表于 2020-2-22 22:57 | 显示全部楼层
谢谢楼主分享!!!
回复

使用道具 举报

ID:798201 发表于 2021-1-8 09:34 | 显示全部楼层
看懂了,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表