首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果void()没有返回值,我们为什么要使用它呢?

如果void()没有返回值,我们为什么要使用它呢?
EN

Stack Overflow用户
提问于 2012-07-19 19:39:59
回答 11查看 43.5K关注 0票数 17

void f()表示f不返回任何内容。如果void什么也不返回,那么我们为什么要使用它呢?void的主要用途是什么

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2012-07-19 19:43:03

发明C时的约定是,如果您没有指定返回类型,编译器会自动推断您想要返回一个int (对于参数也是如此)。

但是通常你编写的函数只做一些事情而不需要返回任何东西(例如,一个只在屏幕上打印东西的函数);因此,为了指定你根本不想返回任何东西,你必须使用void关键字作为“返回类型”。

请记住,void还具有其他用途;特别是:

  • 如果您将其指定为函数的参数列表,则意味着该函数不带参数;这在C中是必需的,因为没有参数的函数声明意味着编译器根本没有指定参数列表。在C++中不再需要这个,因为空的参数列表意味着不允许任何参数,因为function;
  • void在指针中也扮演着重要的角色;void * (及其变体)意味着“指向未指定的东西的指针”。如果你必须编写函数来存储/传递指针,而不是实际使用它们(只有在最后,为了实际使用指针,对适当类型的强制转换是needed).
  • also,),这是很有用的。对(void)的强制转换通常用于将一个值标记为故意不使用,从而抑制编译器警告。

int某个函数( int a,int b,int c) { (void)c;// c为保留供以后使用,删除“未使用的参数”警告返回a+b;}

票数 36
EN

Stack Overflow用户

发布于 2012-07-19 19:45:03

void()表示不返回任何内容。

void并不意味着什么。void是一种不表示任何内容的类型。这是一个细微的区别:表示仍然是必需的,即使它不表示任何东西。

此类型用作函数的返回类型,不返回任何内容。当它被用作void*时,它也被用来表示通用数据。因此,听起来很有趣,虽然void不代表任何东西,但void*代表了一切!

票数 7
EN

Stack Overflow用户

发布于 2012-07-19 19:48:31

这个问题与该语言的历史有关: C++借鉴自C,而C过去常常将所有无类型的内容隐式地类型化为int (事实证明,这是一个可怕的想法)。这包括用作过程的函数(回想一下,函数和过程之间的区别是函数调用是表达式,而过程调用是语句)。如果我没记错的话,在阅读早期的C语言书籍时,程序员过去常常用#define来修补这个缺点

代码语言:javascript
运行
复制
#define void int

这一约定后来在C标准中被采用,并引入了void关键字来表示用作过程的函数。这非常有用,因为编译器现在可以检查您的代码是否使用了不打算返回任何内容的函数的返回值,并警告您应该返回的函数,但让控件在结束时运行。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11560068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档