C語言 void 用法例項

2021-08-16 23:47:13 字數 1970 閱讀 8248

unsigned char err;

unsigned char f;

unsigned char a(unsigned char i, void *j)

void functionnoreturn_1(std::string strname)

functionnoreturn_1函式體中雖然沒有顯式的return;語句。但是,有隱式的return;表示函式不存在返回值。

functionnoreturntype(void)

在c語言中,凡是不加返回值型別限定的函式,就會被編譯器作為返回整型值處理,而不是沒有返回值。所以,functionnoreturntype函式返回10是正確的。

在c++中,每個函式必須限定返回值型別,不允許不加返回值限定。所以,c++編譯器會對functionnoreturntype報錯。

2、void作為函式的引數的限定時,表示函式形參不存在,即函式沒有形參。

例如:void functionnoargument_0(void)

void functionnoargument_1()

注意:void functionnoargument_1();這也表示沒有形參。

在c語言中,functionnoargument_1(10);是合法的。編譯器不會報錯。

在c語言中,functionnoargument_0(10);是不合法的。編譯器會報錯。

在c++語言中,functionnoargument_1(10);和functionnoargument_0(10);

都是不合法的。編譯器會報錯。

c語言中不報錯,也沒什麼關係的。因為,引數10對於函式的執行的結果沒有影響。但是,對於**的維護可能會造成隱藏的危害,可能會給別人造成誤解。

說明:既然提供了void的這兩種用法,就去運用。即函式沒返回值就將其返回值型別寫為void,函式沒有形參就將其形參寫為void。不了解編譯器預設操作時,不要依賴。即使了解其預設操作,也別依賴,因為肯定有人不了解的,這樣別人就看不懂你的**了。

二、void*

void*表示「空型別指標」,與void不同,void*表示「任意型別的指標」或表示「該指標與一位址值相關,但是不清楚在此位址上的物件的型別」。(為什麼不用void表示任意型別的資料呢?大家都知道,c/c++是靜態型別的語言,定義變數就會分配記憶體,然而,不同型別的變數所佔記憶體不同,如果定義乙個任意型別的變數,如何為其分配記憶體呢?所以,c、c++中沒有任意型別的變數。但是,所有指標型別的變數,無論是int*、char*、string*、student*等等,他們的記憶體空間都是相同的,所以可以定義「任意型別的指標」)。

c++/ansi c:

void*指標只支援幾種有限的操作:與另乙個指標進行比較;向函式傳遞void指標或從函式返回void*指標;給另乙個void*指標賦值。不允許使用void*指標操作它所指向的物件,例如,不允許對void*指標進行解引用。不允許對void*指標進行算術操作。

gnu c:

gnu c指定void*指標的算術操作與char*一致。

void*表示「任意型別的指標」,主要運用於記憶體操作函式的形參型別和返回值型別(記憶體操作與記憶體中資料型別無關,即任意型別都可以)。

memcpy  

原型:extern void *memcpy(void *dest, void *src, unsigned int count);   

用法:#include   

功能:由src所指記憶體區域複製count個位元組到dest所指記憶體區域。   

說明:src和dest所指記憶體區域不能重疊,函式返回指向dest的指標。   

注意:與strcpy相比,memcpy並不是遇到'\0'就結束,而是一定會拷貝完n個位元組。

memset

原型:extern void *memset(void *buffer, int c, int count);

用法:#include

功能:把buffer所指記憶體區域的前count個位元組設定成字元c。

說明:返回指向buffer的指標。

C語言 void的用法解析

void 中文翻譯為 無型別 有的也叫 空型別 常用在程式中對定義函式的引數型別 返回值 函式中指標型別進行宣告。首先應該注意一點的是void型別是不同於其他常見型別的,即void 型別不能夠用來申明變數和常量。因為我們申明變數的時候需要明確告訴編譯器,該變數是什麼型別,比如說是int 或 char...

C語言 當void遇到 void

void 表示無 任意型別指標,大小為8b,任何型別指標均為8b 舉個例子 char a calloc 8,5 分配5個連續8位元組記憶體空間 int b calloc 8,5 分配5個連續8位元組記憶體空間 結果使用char型別接收,每個char占用乙個位元組,因為分配的空間總共有40位元組,所以...

C語言 void和void 的區別

在c語言中void 常用於2個方面 對函式返回型別的限定和對函式引數限定。1 對函式返回型別的限定 當函式不需要返回型別是必須用void 來限定返回型別,限定了函式的返回型別為void後,函式不能有返回值。如 void fun int a 2 對函式引數型別的限定 當函式不允許接受引數時,必須用vo...