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 關注
- 1537 瀏覽
添加回答
舉報