【C语言进阶深度学习记录】八 C语言中void的分析
生活随笔
收集整理的這篇文章主要介紹了
【C语言进阶深度学习记录】八 C语言中void的分析
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 1 void的意義
- 1.1 不存在void變量
- 1.2 C標準
- 1.3 void指針的意義
- 1.4 通過void* 實現(xiàn)memset函數(shù)
- 2 總結(jié)
1 void的意義
void修飾函數(shù)的參數(shù)和返回值的時候:
- 如果函數(shù)沒有返回值應(yīng)該將其返回值聲明為void
- 如果函數(shù)沒有參數(shù),應(yīng)該將函數(shù)的參數(shù)聲明為void
- 如果沒有參數(shù),并且不聲明為void,則函數(shù)參數(shù)默認是任意的,比如main函數(shù)
- 如果函數(shù)沒有返回值,但是不聲明為void,則函數(shù)默認返回值是int
如下圖中的函數(shù)f(),它的返回值沒有聲明為void,默認是int,參數(shù)可以是任意多個。
注意:
- void的是為了表示函數(shù)參數(shù)和返回值為無。
- 從以上內(nèi)容,也可以知道,C語言不是一門強類型語言。因為返回值不聲明,就默認可以是int
1.1 不存在void變量
在之前的文章中,我們學過了C語言中的變量的意義:【C語言進階深度學習記錄】一 數(shù)據(jù)類型的本質(zhì)與變量的本質(zhì) ,知道變量的意義在于一段固定大小內(nèi)存的別名。但是void無法表示這么一段固定大小的內(nèi)存,沒有void的標尺,無法在內(nèi)存中裁剪出void對應(yīng)的變量,所以void無法聲明變量。
比如下圖的代碼中,標出error的兩行代碼:
- 但是void* pv這一行沒有標識錯誤。說明這樣是可以的。后序會說明void指針的作用。
1.2 C標準
現(xiàn)在我們先要知道兩個C標準
- ANSI C標準:標準C語言的規(guī)范
- 擴展C標準:不同的廠商在ANSI C標準上進行了擴充。
比如下面的代碼,在ANSI C標準中是會出錯的,但是在GNU的C標準中的gcc編譯器是可以的,且sizeof(void)的大小是1 :
1.3 void指針的意義
void指針在C語言中具有很大的作用,首先我們需要知道:
- C語言規(guī)定,只有相同類型的指針才可以相互賦值
- void* 指針作為左值時,可以接收任意類型的指針
- void* 指針作為右值時,需要對它進行強制類型轉(zhuǎn)換
1.4 通過void* 實現(xiàn)memset函數(shù)
- 代碼:MemSet.c
- 編譯運行結(jié)果為:
2 總結(jié)
- void是一種抽象的數(shù)據(jù)類型
- void類型不能用于定義變量
- void類型一般可以用于聲明無參函數(shù)
- void類型也可以用于聲明函數(shù)無返回值
- 可以定義void* 類型的指針
- void* 指針可以接收任意類型的指針值
總結(jié)
以上是生活随笔為你收集整理的【C语言进阶深度学习记录】八 C语言中void的分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQLyog安装使用教程
- 下一篇: 【C语言进阶深度学习记录】三十六 程序