为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++ C# C
呼唤远方 2019-11-25 10:44:14
希望了解术语“ 无效 ”的来源以及为什么称为“ 无效 ” 的基础。这个问题的目的是为没有C经验并且突然正在寻找基于C的代码库的人提供帮助。
查看完整描述

3 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

基本上,它的意思是“无”或“无类型”

有3种使用void的基本方法:

  1. 函数参数:int myFunc(void) -函数不执行任何操作。

  2. 函数返回值:void myFunc(int) -函数不返回任何内容

  3. 通用数据指针:void* data -“数据”是指向未知类型数据的指针,无法取消引用

注意:void函数内的in参数在C ++中是可选的,因此int myFunc()与完全相同int myFunc(void),并且在C#中完全省略了。返回值始终是必需的。


查看完整回答
反对 回复 2019-11-25
?
青春有我

TA贡献1784条经验 获得超8个赞

我一直认为它是缺席的。这是C语言中与这种用法匹配的四种情况

  • R f(void)缺少功能参数

  • void f(P)-返回值是不存在的

  • void *p-所指对象的类型不存在

  • (void) p缺乏价值使用

其他C后代将其用于其他用途。该D编程语言使用它的情况下的初始化是不存在的

  • T t = void;缺少初始化值


查看完整回答
反对 回复 2019-11-25
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

有两种使用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 */;

}


查看完整回答
反对 回复 2019-11-25
  • 3 回答
  • 0 关注
  • 1467 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信