目录

  • 一.函数简介

    • 1.函数声明
    • 2.函数定义
    • 3.函数调用
    • 4.函数形参和实参
  • 二.函数缺省参数
    • 1.函数全缺省参数
    • 2.函数半缺省参数
  • 三.注意事项
  • 四.猜你喜欢

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

一.函数简介

1.函数声明

函数声明只是一个空壳,不会有具体的函数实现,而定义要实现函数的实现,例如:

int sub(int x,int y); //只需要声明即可,不需要实现这个函数的功能

2.函数定义

函数的定义需要实现这个函数的功能,例如:

int sub(int x,int y) 需要实现这个函数的功能
{return (x-y);
}

3.函数调用

函数调用之前必须声明或者定义,否则会报错:找不到标识符,这也是为什么 hello world 中调用 printf 函数必须要包含 stdio.h 头文件的原因;

4.函数形参和实参

形参:函数被定义或者声明时,参数列表都是形参;

//函数被声明时,参数列表中的x,y都是形参
int sub(int x,int y);
//函数被定义时,参数列表中的x,y都是形参
int sub(int x,int y)
{return (x-y);
}

实参:函数被调用时,传递的参数列表都是实参;

int main(void)
{//sub函数被调用,传递的参数1,2都是实参sub(1,2);return 0;
}

二.函数缺省参数

缺省参数:在声明或者定义函数时为函数的参数指定一个默认值。在调用函数时,若没有指定实参则使用默认值,否则使用指定实参

其中缺省参数分为两类:全缺省参数 和 半缺省参数;

1.函数全缺省参数

函数全缺省参数:函数在定义或者声明时,所有的形参都默认值,举个例子:

/************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言 函数缺省参数
//@Time:2021/06/23 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/************************************************************************/#include <stdio.h>
//x,y为函数的形参,如果函数被调用时,没有设置x和y值,x值默认为100,y值默认为5
int sub(int x=100,int y=5)
{return (x-y);
}
int main(void)
{int a=20;int b=10;//变量a、b为sub函数的实参printf("sub函数计算结果 = %d\n",sub(a, b));//注意:我们并没有为sub函数设置实参,此时默认x=100 y=5printf("sub函数计算结果 = %d\n",sub());return 0;
}
/*
输出:
sub函数计算结果 = 10
sub函数计算结果 = 95
*/

2.函数半缺省参数

函数半缺省参数:函数在定义或者声明时,只有一部分形参有默认值,举个例子:

/************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言 函数缺省参数
//@Time:2021/06/23 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/************************************************************************/#include <stdio.h>
//x,y为函数的形参,如果函数被调用时,没有设置y值,y值默认为5int sub(int x,int y=5)
{return (x-y);
}
int main(void)
{int a=20;int b=10;//变量a、b为sub函数的实参printf("sub函数计算结果 = %d\n",sub(a, b));//注意:我们并没有为sub函数第二个参数设置实参,此时默认y=5printf("sub函数计算结果 = %d\n",sub(a));return 0;
}
/*
输出:
sub函数计算结果 = 10
sub函数计算结果 = 15
*/

三.注意事项

1.参数给缺省值只能从右往左给定(即:有默认值的形参必须放在最后),例如:

void Funtest(int a ,int b;int c=30)*可以
void Funtest(int a =10,int b;int c)*不行
void Funtest(int a =10,int b;int c=30)*不行

2.缺省值必须是常量或者全局变量

四.猜你喜欢

  1. C 语言逻辑运算符
  2. C 语言三目运算符
  3. C 语言逗号表达式
  4. C 语言 sizeof 和 strlen 函数区别
  5. C 语言 strcpy 和 strcpy_s 函数区别
  6. C 语言 memcpy 和 memcpy_s 区别
  7. C 语言 数组定义和使用
  8. C 语言 数组遍历
  9. C 语言 数组下标越界
  10. C 语言 数组内存溢出
  11. C 语言 数组下标越界和内存溢出区别
  12. C 语言 二维数组定义和使用
  13. C 语言 二维数组行数和列数计算
  14. C 语言 指针声明和定义
  15. C 语言 指针 p++ / p–
  16. C 语言 p++/§++/_(p++)/_p++
  17. C 语言 使用指针遍历数组
  18. C 语言 指针和数组区别
  19. C 语言 数组指针
  20. C 语言 指针数组
  21. C 语言 指针数组和数组指针区别
  22. C 语言 空指针 NULL
  23. C 语言 void 指针
  24. C 语言 野指针
  25. C 语言 函数声明和定义
  26. C 语言 函数声明和调用
  27. C 语言 函数值传递和址传递
  28. C 语言 函数缺省参数

未经允许不得转载:猿说编程 » C 语言 函数缺省参数

C语言 函数缺省参数 - C语言零基础入门教程相关推荐

  1. C语言 函数不定长参数 - C语言零基础入门教程

    目录 一.前言 二.函数不定长参数简介 1.va_start 2.va_arg 3.va_end 三.自定义不定长参数的函数 1.va_start/va_arg/va_end 案例一 2.va_sta ...

  2. C语言 const 修饰函数参数 - C语言零基础入门教程

    C语言 const 修饰函数参数 - C语言零基础入门教程 目录 一.const 简介 1.const 修饰变量 2.const 修饰指针 3.const 修饰在函数名前面 4.const 修饰在函数 ...

  3. C语言 const 修饰函数返回值 - C语言零基础入门教程

    目录 一.const 简介 1.const 修饰变量 2.const 修饰指针 二.const 修饰在函数名前面 三.const 修饰在函数名后面 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : ...

  4. C语言 回调函数 callback - C语言零基础入门教程

    目录 一.回调函数原理 二.回调函数简介 1.函数指针 2.指针函数 3.回调函数解释 三.回调函数实战 四.回调函数使用总结 五.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 ...

  5. C语言 函数指针和指针函数区别 - C语言零基础入门教程

    目录 一.函数指针和指针函数声明的区别 1.函数指针 2.指针函数 二.函数指针和指针函数调用的区别 1.函数指针的调用 2.指针函数的调用 三.猜你喜欢 零基础 Python 学习路线推荐 : C/ ...

  6. C语言 函数指针 - C语言零基础入门教程

    目录 一.函数指针简介 1.常规函数声明 2.函数指针声明 二.函数指针实战 三.猜你喜欢 零基础 Python 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.函数指 ...

  7. C语言 define 定义函数 - C语言零基础入门教程

    目录 一.define 简介 二.define 定义函数 1.define 定义不带参数的函数 2.define 定义带参数的函数 三.define 定义函数陷阱 1.define 函数陷阱一 2.d ...

  8. C语言 define 定义函数(多行书写) - C语言零基础入门教程

    目录 一.define 简介 二.define 定义多行函数 1.简单使用 2.经典案例 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 ...

  9. C语言 ##__VA_ARGS__ - C语言零基础入门教程

    目录 一.##__VA_ARGS__原理 二.##__VA_ARGS__使用 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.##__ ...

最新文章

  1. python扩展库不是用于科学计算的有_有哪些科学计算的开源库
  2. Java基础入门笔记-Eclipse快捷操作
  3. c语言程序仪表称重编程,基于WinCE的双台面动态汽车称重装置仪表设计
  4. 视频传输的方式有哪些?
  5. 一元云购指定中奖版源码(开源+PC+移动端)
  6. python爬虫抖音视频代码_python爬虫 抖音短视频解析下载
  7. csharp进阶练习题:谜机 - 第1部分:插板【难度:2级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练
  8. vue 使用animate动画
  9. 基于程序员职业对于婚配问题的研究——程序员为何单身?
  10. Hive sum over partition preceding following 累计求和
  11. Java Web 开发后续(二)
  12. SQL Server Reporting Services
  13. andorid 访问不到smms图片
  14. 卫星图像地物判别标志(假彩色)
  15. JS 对输入的姓名 手机号码 邮箱做校验
  16. 一个狱警当上Oracle中国总经理
  17. 利用Mycat分库分表操作
  18. Win10 使用python和ffmpeg批量合并音视频
  19. 分享一份嵌入式软件工具清单!
  20. 电子相册模板从头学起

热门文章

  1. 【详谈 Delta Lake 】系列技术专题 之 Streaming(流式计算)
  2. 排查指南 | 当 mPaaS 小程序提示“应用更新错误(1001)”时
  3. Pick!闲鱼亿级商品库中的秒级实时选品
  4. FBEC2021暨第六届金陀螺奖颁奖典礼盛大开幕
  5. 低代码从技术走向产品,用友发布自动化设计工具“码前”
  6. 华云数据升级发布“信创云基座“ 用“全芯全栈”支持“信创强国”
  7. 共筑全场景智慧生态,华为HMS全球应用创新大赛火热开启
  8. 领航智变时代 2020 NAVIGATE领航者峰会云上起航
  9. 阿里云PolarDB重大更新:两大技术突破,传统数据库一键迁移上云
  10. OpenStack精华问答 | OpenStack都有哪些基础服务?