void f()意味着f什么都不返回.如果void什么都不返回,那我们为什么要使用呢?主要目的是void什么?
Mat*_*lia 33
当C被发明时,惯例就是,如果你没有指定返回类型,编译器会自动推断出你想要返回一个int(和参数相同).
但是你经常编写做东西的函数而不需要返回任何东西(例如,想想一个只是在屏幕上打印一些东西的函数); 因此,决定要指定您根本不想返回任何内容,必须使用void关键字作为"返回类型".
请记住,这void也有其他用途; 特别是:
如果将其指定为函数的参数列表,则表示该函数不带参数; 这在C中是必需的,因为没有参数的函数声明意味着编译器只是未指定参数列表.在C++中不再需要这个,因为空参数列表意味着该函数不允许参数;
void在指针中也有重要作用; void *(及其变体)的意思是"指向未指定的东西".如果你必须编写必须存储/传递指针而不实际使用它们的函数(仅在最后,实际使用指针,需要强制转换为适当类型),这非常有用.
另外,强制转换(void)通常用于将值标记为故意未使用,从而抑制编译器警告.
int somefunction(int a, int b, int c)
{
(void)c; // c is reserved for future usage, kill the "unused parameter" warning
return a+b;
}
Run Code Online (Sandbox Code Playgroud)void()表示什么都不返回.
void并不意味着什么.void是一种类型,以代表什么.这是一个微妙的差异:表示仍然是必需的,即使它代表什么都没有.
此类型 用作函数的返回类型,不返回任何内容.当它被用作时,这也用于表示通用数据void*.所以,它听起来有趣的是,虽然void代表什么,void*代表一切!
这个问题与语言的历史有关:C++是从C语言中借用的,C语言用于隐式键入所有类型的无类型int(事实证明,这是一个可怕的想法).这包括用作过程的函数(回想一下,函数和过程之间的区别在于函数调用是表达式,而过程调用是语句).如果我从阅读早期的C书中正确地回忆起它,程序员过去常常用以下方法修补这个缺点#define:
#define void int
Run Code Online (Sandbox Code Playgroud)
此约定后来在C标准中采用,并且void引入了关键字以表示用作过程的函数.这非常有用,因为编译器现在可以检查您的代码是否使用了一个函数的返回值,该函数不是为了返回任何东西,并警告您应该返回的函数,而是让控件在最后运行.
在诸如C,C++,Java等命令式编程语言中,类型的函数和方法void用于它们的副作用.它们不会产生有意义的返回值,但它们会以多种可能的方式之一影响程序状态.例如,exitC中的函数不返回任何值,但它具有中止应用程序的副作用.另一个例子,C++类可能有一个void方法来改变其实例变量的值.
| 归档时间: |
|
| 查看次数: |
37289 次 |
| 最近记录: |