文档章节

C/C++ void参数

天蚕宝衣
 天蚕宝衣
发布于 2017/08/13 16:11
字数 408
阅读 24
收藏 0

一. C

在C程序中如果在声明函数的时候如果没有任何参数那么需要将参数定义为void以此来限定此函数不可传递任何参数,如果不进行限定让参数表默认为空其意义是可以传递任何参数,这个问题的由来实际上是由于要兼容早期的K&C标准造成的。K&C在声明函数时参数表为空,也就是说函数声明时的函数原型签名信息不包含参数信息,如果要有明确地定义空参数的行为那么就要自己去处理它。以下是C代码:

// 空参数表代表可以传递任意的参数。
void fun();
fun(1);           // 正常编译。
fun(1, 2, 3);     // 正常编译。
// 参数表定义为void才是表示不能传递任何参数。
void noargfun(void);
noargfun(1);      // 编译错误,有的编译器仅仅是警告。

二. C++

在C++中定义函数时是否有必要对无参数的函数列表定义void参数呢?答案是No。C++标准规定如果没有对参数列表进行定义那么就表示函数不能传递任何参数,这从语义上来讲更符合人的思维方式。以下是C++代码:

// 空参数表的意义是不可以传递任何参数。
void fun();      // void fun(void)含义相同。
fun(1);          // 编译错误。
fun(1, 2, 3);    // 编译错误。

当然如果指定义函数,void那么不管在C还是C++都表示不可以传递任何参数。

© 著作权归作者所有

天蚕宝衣
粉丝 28
博文 246
码字总数 181517
作品 0
天津
私信 提问
C与C++的细微区别——省略形式参数名

一、C与C++的细微区别 在函数声明中: 无论是C还是在C++,都可以省略形式参数名。 但是,通常都不建议省略形式参数名。 在函数定义中: 1. 当需要使用形式参数的时候,显然,必须给形式参数命...

Start-up
2012/05/08
141
0
“#ifdef __cplusplus extern "C" { #endif”的定义

看一些程序的时候老是有 “#ifdef __cplusplus extern "C" { #endif”的定义,搞搞清楚是怎么回事: Microsoft-Specific Predefined Macros __cplusplus Defined for C++ programs only. 意思......

长平狐
2012/07/12
257
0
C++项目中的extern "C" {}

引言 在用C++的项目源码中,经常会不可避免的会看到下面的代码: 1 2 3 4 5 6 7 8 9 #ifdef cplusplus extern "C" { #endif /.../ #ifdef cplusplus } #endif 它到底有什么用呢,你知道吗?而...

暖冰
2015/11/20
27
0
[开源世界]如何让C++的模板类支持多参数但同名?

在C++中,根据函数参数个数的不同区分函数重载再常见不过了。也就是说,向下面这样的函数重载在C++中是合法的。 int max(int a, int b) { return a>b?a:b; } int max(int a, int b, int c) {...

梁欢
2014/06/30
131
0
C#调用C的Dll(类型对照)

C#调用C的DLL //C++中的DLL函数原型为 //extern "C" declspec(dllexport) bool 方法名一(const char 变量名1, unsigned char 变量名2) //extern "C" declspec(dllexport) bool 方法名二(cons......

KavenSu
2014/04/30
3.6K
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud 笔记之Spring cloud config client

观察者模式它的数据的变化是被动的。 观察者模式在java中的实现: package com.hxq.springcloud.springcloudconfigclient;import org.springframework.context.ApplicationListener;i...

xiaoxiao_go
今天
4
0
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
今天
4
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
今天
7
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
今天
7
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部