C void 用法記錄

2021-09-28 11:29:56 字數 1040 閱讀 1153

void的字面意思是空型別,void *的意思是空型別指標,void 不是乙個真正的型別,我們在宣告變數的時候從來不會像下面這樣宣告:

void a;

如果我們寫了一行這樣的**,某些編譯器會直接報錯,有些則不會,但也沒有任何意義。

void真正的用途在下面兩個方面:

對函式返回值的限定

對函式引數的限定

比如,函式沒有返回值,那麼函式可能會宣告成這樣:void fun(int a);

如果函式有返回值,但是函式沒有引數,那麼函式的可能會宣告成這樣:int fun(void)。

以上的情況都是很好理解的。下面介紹void *的一些用法。

1. 函式可接受任意型別的指標。

用過memset或者memcpy的細心的人會發現,在gcc中編譯類似下面的**都不會有警告:

int a;

int *p = &a;

memset(p, 0, 4);

或者char c[4];

char *p = c;

memset(p, 0, 4);

為什麼memset傳int *還是char *都沒有問題呢?我們知道不同型別間複製是要進行強制轉換的,那麼這裡為什麼不用強制型別轉換呢。我們看memset的原型會發現,memset的第乙個引數就是void *。

2. void *型別可以接受任意型別指標。

例如:void *p1;

char *p2 = 「hellp」;

p1 = p2;

這是沒有問題的,任何型別的指標都可以直接賦值給它,無需進行強制型別轉換。但需要注意的一點是,void *的型別並不能無需型別轉換直接賦值給其他型別,比如malloc的返回值是void *,那麼我們一般這樣寫:char *p = (char *)malloc(4);

3. void *型別不能做運算

比如我們不要做類似這樣的操作:

void *p;

p++;

說白了void並不是乙個真實的變數,void可以看作乙個抽象概念。

以上說法由於c標準不同,可能有部分差異,需要特殊對待,但大體就是這樣的。

C void基礎概念講述

c void意思是指無型別。那麼void指標則是無型別指標。他們的基本概念我們將會在這篇文章中為大家詳細介紹。c 程式語言中的很多概念都值得我們去不斷的學習,不斷的從中積累經驗以幫助我們在程式編寫時獲得更大的幫助。比如今天為大家介紹的c void就是ige比較重要的內容。許多初學者對c void及v...

c void 的小作用

include include using namespace std void o int x,void y int main 1 0x7038f28b8e98 20x7038f28b8e9c首先最簡單的,x表示取值,所以輸出了1,接著x表示 a,也就是a的記憶體位址,所以我們可以看到輸出了乙個位...

c void,記憶體操作函式

1 void的含義 void的字面意思是 無型別 void 則為 無型別指標 void 可以指向任何型別的資料 void幾乎只有 注釋 和限制程式的作用,因為從來沒有人會定義乙個void變數。讓我們來試著來定義 void a error variable or field a declared vo...