扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
C语言中没有参数默认值的概念,但其实可以利用宏来模拟参数的默认值;
目前创新互联公司已为成百上千家的企业提供了网站建设、域名、虚拟空间、绵阳服务器托管、企业网站设计、沽源网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
我们之前介绍过可变参数宏与逗号运算符,将两者相结合的话可以定义出以下形式的宏:
当在 func() 里不填写任何内容的时候,正常情况下宏展开后会是 func((default,)) ,但由于 ##__VA_ARGS__ 会将前面多余的逗号忽略,所以宏展开后就相当于 __func((default)) ;
当在 func() 括号里填写有效值的时候,根据逗号运算符的值等于最后一个表达式的值的性质,宏会被展开为 __func((##__VA_ARGS__)) 既 default 被丢弃,传入的值只有我们填写的内容,通过这个技巧我们就可以设计出一个带有默认参数的函数。
示例:
定义一个函数默认参数为 0xff ,不传任何参数的时候打印 0xff ,传入有效值的时候就打印我们传入的内容;
输出:
在许多c语言初学者中编写函数时,都喜欢将无参函数中的参数类型忽略。
但是实际上 默认的参数类型 不是无参 void ,而是接受 任意数量和类型的参数 。也就是说 int func() 和 int func(void) 是不一样的。下面通过一个例子加深了解一下在C语言中函数的默认参数类型:
所以说,在使用c语言编写无参函数时,一定要把 void 写上去,不然会有安全隐患。
可以这样调用。
int b=0指的是默认参数,调用时传入或不传入b都行,如果不传入b的话,那么b的值就是0。
另外注意只有最后面的参数可以是默认参数。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流