void关键字
文章目錄
- 1 void修飾函數返回值和參數
- 1.1 void修飾函數返回值和參數
- 1.2 當函數參數和返回值不寫時
- 2 void類型不能用來定義變量
- 2.1 不存在void變量
- 2.2 擴展C可以使用sizeof獲得void類型的大小
- 3 void指針
- 3.1 void指針的意義
- 3.2 通過void*實現MemSet函數
1 void修飾函數返回值和參數
1.1 void修飾函數返回值和參數
void修飾函數返回值和參數應該如下使用:
- 如果函數沒有返回值,那么應該將其聲明為void。
- 如果函數沒有參數,應該聲明其參數為void。
void修飾函數返回值和參數是為了表示“無”。
1.2 當函數參數和返回值不寫時
對于上面的代碼,如果返回值不寫,那么編譯器會默認返回int類型的返回值,值是0;如果函數參數不寫,不是指不接受參數,而是指可以接收任意的參數。
2 void類型不能用來定義變量
2.1 不存在void變量
我們需要注意,void是一種抽象的數據類型,是不存在void變量的(void指針變量是可以定義的)。C語言沒有定義void究竟是多大內存的別名,也就沒有void的標尺,我們就無法在內存中裁剪出void對應的變量。
2.2 擴展C可以使用sizeof獲得void類型的大小
ANSI C是指標準C語言的規范,而擴展C則是在ANSI C的基礎上進行了擴充。
上面的代碼在ANSI C編譯器中無法通過編譯,但是對于支持GNU標準的gcc編譯器而言是合法的,大小為1。
3 void指針
3.1 void指針的意義
在C語言中規定了只有相同類型的指針才可以相互賦值,void指針作為左值用于接收任意類型的指針,void指針作為右值使用時需要進行強制類型轉換。
3.2 通過void*實現MemSet函數
代碼如下:
#include <stdio.h>void MemSet(void* src, int length, unsigned char n) {unsigned char* p = (unsigned char*)src;int i = 0;for(i=0; i<length; i++){p[i] = n;} }int main() {int a[5];int i = 0;MemSet(a, sizeof(a), 0);for(i=0; i<5; i++){printf("%d\n", a[i]);}return 0; }參考資料:
總結
- 上一篇: 家里的故事西蒙视频教程(家里的故事西蒙怎
- 下一篇: 普适的GPIO引脚操作方法