在C,C ++和C#中,void是什么意思?

希望了解术语“ 无效 ”的来源以及为什么称为“ 无效 ” 的基础。这个问题的目的是为没有C经验并且突然正在寻找基于C的代码库的人提供帮助。



呼唤远方
浏览 1468回答 3
3回答

繁花不似锦

基本上,它的意思是“无”或“无类型”有3种使用void的基本方法:函数参数:int myFunc(void) -函数不执行任何操作。函数返回值:void myFunc(int) -函数不返回任何内容通用数据指针:void* data -“数据”是指向未知类型数据的指针,无法取消引用注意:void函数内的in参数在C ++中是可选的,因此int myFunc()与完全相同int myFunc(void),并且在C#中完全省略了。返回值始终是必需的。

青春有我

我一直认为它是缺席的。这是C语言中与这种用法不匹配的四种情况R f(void)- 缺少功能参数void f(P)-返回值是不存在的void *p-所指对象的类型不存在(void) p- 缺乏价值使用其他C后代将其用于其他用途。该D编程语言使用它的情况下的初始化是不存在的T t = void;- 缺少初始化值

慕雪6442864

有两种使用void的方法:void foo(void);要么void *bar(void*);第一个指示没有参数传递或没有参数返回。第二个告诉编译器没有与数据有效关联的类型,这意味着在将其转换为已知类型之前,您无法使用指向的数据。例如,void*当您有一个接口调用一个其参数无法提前知道的函数时,您会发现使用了很多东西。例如,在Linux内核中,当推迟工作时,您将为函数提供指向要运行的函数的指针和指向要传递给该函数的数据的指针,以设置稍后运行的函数:struct _deferred_work {sruct list_head mylist;.worker_func = bar;.data        = somedata;} deferred_work;然后,内核线程遍历了一系列延迟的工作,当到达该节点时,它将有效地执行:bar(somedata);然后在栏中,您将:void bar(void* mydata) {    int *data = mydata;    /* do something with data */;}
打开App,查看更多内容
随时随地看视频慕课网APP