void f()
表示f
不返回任何内容。如果void
什么也不返回,那么我们为什么要使用它呢?void
的主要用途是什么
发布于 2012-07-19 19:43:03
发明C时的约定是,如果您没有指定返回类型,编译器会自动推断您想要返回一个int
(对于参数也是如此)。
但是通常你编写的函数只做一些事情而不需要返回任何东西(例如,一个只在屏幕上打印东西的函数);因此,为了指定你根本不想返回任何东西,你必须使用void
关键字作为“返回类型”。
请记住,void
还具有其他用途;特别是:
void
在指针中也扮演着重要的角色;void *
(及其变体)意味着“指向未指定的东西的指针”。如果你必须编写函数来存储/传递指针,而不是实际使用它们(只有在最后,为了实际使用指针,对适当类型的强制转换是needed).(void)
的强制转换通常用于将一个值标记为故意不使用,从而抑制编译器警告。int某个函数( int a,int b,int c) { (void)c;// c为保留供以后使用,删除“未使用的参数”警告返回a+b;}
发布于 2012-07-19 19:45:03
void()表示不返回任何内容。
void
并不意味着什么。void
是一种不表示任何内容的类型。这是一个细微的区别:表示仍然是必需的,即使它不表示任何东西。
此类型用作函数的返回类型,不返回任何内容。当它被用作void*
时,它也被用来表示通用数据。因此,听起来很有趣,虽然void
不代表任何东西,但void*
代表了一切!
发布于 2012-07-19 19:48:31
这个问题与该语言的历史有关: C++借鉴自C,而C过去常常将所有无类型的内容隐式地类型化为int
(事实证明,这是一个可怕的想法)。这包括用作过程的函数(回想一下,函数和过程之间的区别是函数调用是表达式,而过程调用是语句)。如果我没记错的话,在阅读早期的C语言书籍时,程序员过去常常用#define
来修补这个缺点
#define void int
这一约定后来在C标准中被采用,并引入了void
关键字来表示用作过程的函数。这非常有用,因为编译器现在可以检查您的代码是否使用了不打算返回任何内容的函数的返回值,并警告您应该返回的函数,但让控件在结束时运行。
https://stackoverflow.com/questions/11560068
复制相似问题