C语言 函数缺省参数详情

目录
  • 一.函数简介
    • 1.函数声明
    • 2.函数定义
    • 3.函数调用
    • 4.函数形参和实参
  • 二.函数缺省参数
    • 1.函数全缺省参数
    • 2.函数半缺省参数
  • 三.注意事项

一.函数简介

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=5
    printf("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值默认为5

int 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=5
    printf("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.缺省值必须是常量或者全局变量

到此这篇关于C语言 函数缺省参数详情的文章就介绍到这了,更多相关C语言 函数缺省参数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言函数的基本使用和递归详解

    目录 本章目标 函数是什么 C语言中函数的分类 库函数 如何学会使用库函数? 自定义函数 函数的参数 函数的调用: 函数的嵌套调用和链式访问 嵌套调用 链式访问 函数的声明和定义 函数递归 什么是递归? 递归的两个必要条件 递归与迭代 总结 本章目标 秃头侠们好呀,今天我们一起学习函数! 目标: 本章主要掌握函数的基本使用和递归 函数是什么 数学中我们常见到函数的概念.但是你了解C语言中的函数吗? 维基百科中对函数的定义:子程序 在计算机科学中,子程序(英语:Subroutine, proced

  • C语言rewind与fseek函数之随机读写文件的用法详解

    前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读写,也就是说从文件的任意位置开始读写. 实现随机读写的关键是要按要求移动位置指针,这称为文件的定位. 文件定位函数rewind和fseek 移动文件内部位置指针的函数主要有两个,即 rewind() 和 fseek(). rewind() 用来将位置指针移动到文件开头,前面已经多次使用过,它的原型为

  • C语言的函数概念与规则你了解吗

    目录 一.函数概念 1.传入参数 2.返回值 二.函数参数 三.指针函数-函数名指针化 1.指针指向其他函数的函数名(标签)效果 2.指针指向其他函数的地址效果 3.通过二级指针,将一组函数线性化 四.函数值传递和址传递 五.函数连续空间的传递 1.结构体(变量) 2.数组(标签) 3.连续空间的只读 六.函数返回值 总结 一.函数概念 函数三要素 int fun(int,int,char){xxx} 函数名 (地址)输入参数输出参数 1.传入参数 实参: 调用时传入的具体值 形参: 函数内部接

  • C语言当函数执行成功时return1还是0

    目录 1.C语言函数的返回值 2."行业潜规则" 3.函数成功只有一种可能,函数失败却有多种可能 4.C语言程序员中还有一种"行业潜规则" 5.最后 今天分享的内容是关于函数执行成功,返回0还是1的讨论~ 基本上,没有人会将大段的C语言代码全部塞入 main() 函数,更好的做法是按照复用率高,耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封装成函数.C语言代码的组合千变万化,因此函数的功能可能会比较复杂,不同的输入,常常产生不同的输出结果. 不同的输入,常常

  • c语言中缺省参数的类型总结

    1.函数全缺省参数,函数在定义或者声明时,所有的形参都默认值. #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)); //注意:

  • C语言 函数缺省参数详情

    目录 一.函数简介 1.函数声明 2.函数定义 3.函数调用 4.函数形参和实参 二.函数缺省参数 1.函数全缺省参数 2.函数半缺省参数 三.注意事项 一.函数简介 1.函数声明 函数声明只是一个空壳,不会有具体的函数实现,而定义要实现函数的实现,例如: int sub(int x,int y); //只需要声明即可,不需要实现这个函数的功能 2.函数定义 函数的定义需要实现这个函数的功能,例如: int sub(int x,int y) ////需要实现这个函数的功能 { return (x

  • C++函数的默认参数详情

    文章转自微信 公众号:Coder梁(ID:Coder_LT) C++当中的支持默认参数,如果你学过Python,那么想必对此不会陌生.C++中的默认参数的用法和Python基本一致. 使用默认参数的方法非常简单,也就是我们在函数声明的时候,就为某些参数指定好默认值.当我们调用函数的时候,如果没有传入对应的参数,那么则使用默认值. 比如: void func(int a, int b=2, int c=3, int d=4) { cout << a << " "

  • C语言函数的递归调用详情

    目录 一.什么是递归 二.递归与迭代 一.什么是递归 程序调用自身的编程技巧称为递归( recursion) .递归做为一种算法在程序设计语言中广泛应用.一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量.递归的主要思考方式在于:把大事化小 递归的两个必要条件: 存在限制条件,当满足这个限制条件的时候,递归便不再继续. 每次

  • C语言函数基础教程分类自定义参数及调用示例详解

    目录 1.  函数是什么? 2.  C语言中函数的分类 2.1 库函数 2.1.1 为什么要有库函数 2.1.2 什么是库函数 2.1.3 主函数只能是main()吗 2.1.4常见的库函数 2.2 自定义函数 2.2.1自定义函数是什么 2.2.2为什么要有自定义函数 2.2.3函数的组成 2.2.4 举例展示 3. 函数的参数 3.1 实际参数(实参) 3.2  形式参数(形参) 4. 函数的调用 4.1 传值调用 4.2  传址调用 4.3 练习 4.3.1. 写一个函数判断一年是不是闰年

  • C++入门(命名空间,缺省参数,函数重载,引用,内联函数,auto,范围for)

    一.C++关键字 C++总共有63个关键字,在入门阶段我们只是大致了解一下就可,在后续博客中会逐渐讲解 二.命名空间 相信学过C++的同学,一定都写过下面这个简单的程序 #include<iostream> using namespace std; int main() { cout<<"hello world"<<endl; return 0; } 我们先来看第二行代码,using namespace std , 这行代码是什么意思呢 ? 这里我们

  • C++简明讲解缺省参数与函数重载的用法

    目录 一.缺省参数 1.1缺省参数概念 1.2缺省参数分类 二.函数重载 2.1函数重载概念 2.2名字修饰 一.缺省参数 缺省参数形象来说就是"备胎". 1.1缺省参数概念 缺省参数是声明或定义函数时为函数的参数指定一个默认值.在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参. #include<iostream> void P(int a = 3) { printf("%d", a); } int main() { P();//打印

  • python 函数的缺省参数使用注意事项分析

    本文实例讲述了python 函数的缺省参数使用注意事项.分享给大家供大家参考,具体如下: python的函数支持4种形式的参数:分别是必选参数. 缺省参数. 可变长参数.关键字参数:而且参数的书写顺序也是又一定规定的,顺序如下 def fun(param, default_params, arbitrary_params, keyword_param) 下面针对缺省型参数分析一些注意事项 先定义这样子一个函数 def test_fun(a=[]): a.append('a') print a i

  • C语言函数的参数使用指针

    在c语言中实参和形参之间的数据传输是单向的"值传递"方式,也就是实参可以影响形参,而形参不能影响实参.指针变量作为参数也不例外,但是可以改变实参指针变量所指向的变量的值. #include <stdio.h> void swap1(int x,int y),swap2(int *px,int *py),swap3(int *px,int *py); int main(void) { int a=1,b=2; int *pa=&a,*pb=&b; swap1(

  • c语言main函数使用及其参数介绍

    每一C程序都必须有一main()函数,可以根据自己的爱好把它放在程序的某个地方.有些程序员把它放在最前面,而另一些程序员把它放在最后面,无论放在哪个地方,以下几点说明都是适合的. 在Turbo C2.0启动过程中,传递main()函数三个参数:argc,argv和env.* argc:整数,为传给main()的命令行参数个数.* argv:字符串数组.char* argv[],我们可以看出,argv的类型是char* [],即是一个指向字符数组的指针,所以我们还可以写作:char** argv.

随机推荐