1、函数全缺省参数,函数在定义或者声明时,所有的形参都默认值。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#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、函数半缺省参数,函数在定义或者声明时,只有一部分形参有默认值。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#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)半缺省参数 必须 从右向左 依此 给出,不能间隔着给。原因:函数调用时,需要将参数压栈,参数压栈是 从右向左 依次 压栈,若缺省参数间隔着给,则 将会出现 问题
2)缺省参数 不能在 函数声明 和 定义中 同时 出现,尽量在声明中给出。原因:如果 缺省参数 的 声明和定义 位置同时存在,恰巧两个位置提供的值不同,编译器将 无法判断到底 该使用 哪一个。
3)缺省值 必须 是 常量 或者全局变量。
4) C语言不支持 (编译器不支持)
到此这篇关于c语言中缺省参数的类型总结的文章就介绍到这了,更多相关c语言中缺省参数的两种类型内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://www.py.cn/other/jiaocheng/33459.html