3 回答
TA贡献1851条经验 获得超4个赞
基本上,它的意思是“无”或“无类型”
有3种使用void的基本方法:
函数参数:
int myFunc(void)
-函数不执行任何操作。函数返回值:
void myFunc(int)
-函数不返回任何内容通用数据指针:
void* data
-“数据”是指向未知类型数据的指针,无法取消引用
注意:void
函数内的in参数在C ++中是可选的,因此int myFunc()
与完全相同int myFunc(void)
,并且在C#中完全省略了。返回值始终是必需的。
TA贡献1784条经验 获得超8个赞
我一直认为它是缺席的。这是C语言中与这种用法不匹配的四种情况
R f(void)
- 缺少功能参数void f(P)
-返回值是不存在的void *p
-所指对象的类型不存在(void) p
- 缺乏价值使用
其他C后代将其用于其他用途。该D
编程语言使用它的情况下的初始化是不存在的
T t = void;
- 缺少初始化值
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 */;
}
- 3 回答
- 0 关注
- 1467 浏览
添加回答
举报