昨天我們談了數據類型中的枚舉類型,今天我們來談一談數據類型中的void類型。
大家看到“void”這個單詞,是不是感覺非常熟悉呢,沒錯,這是一個關鍵字,我們平時常常會用在定義函數、方法。
但說來慚愧,學C語言那麼久,到現在為止,我還沒有完全搞懂void的含義,平時隻知道使用void來定義一個方法和函數。
在回顧C語言補充内容的時候,我才正式注意到了void這個概念。
void類型的定義void類型,也叫做無數據類型,換言之,就是沒有數據類型。
那麼void既然是定義無數據類型的,那麼能夠像前兩天說的“枚舉類型”和“基本類型”,應該也能用來定義數據吧。
但我嘗試着使用void來定義變量,卻發現報錯了。
所以,要定義變量的話,還是得給定指定的數據類型才行。
那麼,void類型主要是用在什麼地方呢?
根據網上查閱的相關資料,void主要是用在對函數返回的限定和對參數返回的限定。
這句話比較難以理解,我看到這句話的時候,我也有點懵圈。
但進行梳理後,也比較好理解了。
就是void類型主要有三種情況,分别是“函數返回為空”、“函數參數為空”、“指針指向void”,但是這三種情況,到目前為止我隻能解釋前兩種,對于第三種情況還略有些不明白,或許需要後續進行一個補充。
我們可以使用void來定義函數,但對于主函數main來說,使用void main(){}卻會發現産生警告,這是因為main函數的返回值是int整數類型,所以要使用int main(){}來作為主方法,兩者的主要區别就在于有無返回值。
void fun(){//函數返回為空
//沒有return的返回值,這個可以與int定義函數進行一個對比
}
int main(){
return 0;
}
int fun1(){//函數參數為空
return 0;
}
int fun2(void){//函數參數為空
return 0;
}
很顯然,函數參數為空有兩種情況,一種是括号内什麼都不添加,而另一種則是添加void。
malloc是内存分配函數,因為指針指向void我不是很明白,所以這裡舉了一個大家常用的一個内存分配函數的例子,等我再研究研究或許就明白的差不多了呢。
void *malloc( size_t size );//類型為void *的指針代表對象的地址,而不是類型
int main(){
void *m;
int *n;
m = n;
printf("%d",m);
}
但顯然,這仍然是存在一些問題的,可是這是根據網上的說法來得到的,顯然是有問題的。
所以我在基于自己的理解上修改了下代碼,也就是根據指針的定義,要使用&這個符号來訪問内存地址。
可以發現,這樣就是正确的,到目前為止,我就發現void最有效的作用就是不需要強制進行類型轉換,可以幫助簡便程序。
總的來說,void類型其實我們平時用的比較少,所以對這個類型也沒太多概念,今天主要是提及一下,之後若是再遇到了,我會再根據相應的題目寫相應的文章來解釋的。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!