VOID是什麼意思,C語言中void是什麼意思

時間 2021-06-17 15:43:58

1樓:匿名使用者

表示空型別,它跟int,float是同地位的,一般用在沒有返回值的函式中,比如你寫void main (),主函式完了不用寫return 語句,但是如果是int main ()或者是main (),你不寫return 語句它就會有warning

2樓:匿名使用者

自定義方法,沒有返回值,按你給的這個方法的英文字面意思是列印的意思,一般方法都有方法名和方法體,你要實現列印的功能,比如

void print()

3樓:戀晴忽忽

表示空,一般是函式前面加一個void 表示沒有返回值的函式

4樓:匿名使用者

main是一切(控制檯)程式都必須有的一個入口函式main函式是否有返回值在絕大多數情況下無關緊要因為main函式體內的**一旦執行完畢

這個程式就結束了

另外lz顯然沒有理解程式開發中封裝的思想

5樓:螞蟻愛吐槽

void是c語言中的一個關鍵字,字面意思是「無型別」,常用在程式編寫中對定義函式的引數型別、返回值、函式中指標型別進行宣告,有註釋和限制程式的作用。void *可以指向任何型別的資料,在c語言中,凡不加返回值型別限定的函式,就會被編譯器作為返回整型值處理。

void的字面意思是「無型別」,void *則為「無型別指標」,void *可以指向任何型別的資料。

void幾乎只有「註釋」和限制程式的作用,定義一個void變數沒有意義,不妨試著定義:

void真正發揮的作用在於:

1、 對函式返回的限定

2、對函式引數的限定

c語言中void是什麼意思

6樓:匿名使用者

void 被翻譯為"無型別",相應的void * 為"無型別指標"。常用在程式編寫中對定義函式的引數型別、返回值、函式中指標型別進行宣告。

void 的作用

1.對函式返回的限定,這種情況我們比較常見。

2.對函式引數的限定,這種情況也是比較常見的。

一般我們常見的就是這兩種情況:

(1)當函式不需要返回值值時,必須使用void限定,這就是我們所說的第一種情況。例如:void func(int a,char *b)。

(2)0當函式不允許接受引數時,必須使用void限定,這就是我們所說的第二種情況。例如:int func(void)。

7樓:鄙視04號

void真正發揮的作用在於: (1) 對函式返回的限定; (2) 對函式引數的限定。

void的字面意思是「無型別」,void *則為「無型別指標」,void *可以指向任何型別的資料。

void幾乎只有「註釋」和限制程式的作用,因為從來沒有人會定義一個void變數,讓我們試著來定義:

void a;

這行語句編譯時會出錯,提示「illegal use of type 'void'」。不過,即使void a的編譯不會出錯,它也沒有任何實際意義。

規則一:如果函式沒有返回值,那麼應宣告為void型別

在c語言中,凡不加返回值型別限定的函式,就會被編譯器作為返回整型值處理。但是許多程式設計師卻誤以為其為void型別。例如:

add ( int a, int b )

int main(int argc, char* argv)

程式執行的結果為輸出:2 + 3 = 5,這說明不加返回值說明的函式的確為int函式。

規則二:如果函式無引數,那麼應宣告其引數為void。

在c++語言中宣告一個這樣的函式:

int function(void)

則進行下面的呼叫是不合法的:

function(2);

因為在c++中,函式引數為void的意思是這個函式不接受任何引數。在turbo c 2.0中編譯:

#include "stdio.h"

fun()

main()

編譯正確且輸出1,這說明,在c語言中,可以給無引數的函式傳送任意型別的引數,但是在c++編譯器中編譯同樣的**則會出錯。在c++中,不能向無引數的函式傳送任何引數,出錯提示「'fun' : function does not take 1 parameters」。

所以,無論在c還是c++中,若函式不接受任何引數,一定要指明引數為void。

定義函式

返回值 函式名(引數1,引數2,引數3,.......)

{內容}

int  sum(int a,int b)

{int c;

return c;}

其中第一個int是返回值 就是別的函式呼叫此函式時這個函式給他的一個值。

如果呼叫時不需要返回值,則函式寫為

void sum(int a,int b){....}  此時函式沒有返回值

如果不需要引數  則int sum(void){...}

此時void的意義為空,就是沒有引數的意思

如果都不要  則為void sum(void);

8樓:匿名使用者

void的意思就是樓主說的2個意思,這兩個意思都對。

void真正發揮的作用在於:

(1) 對函式返回的限定;

(2) 對函式引數的限定。

先給一個例子 定義函式

返回值 函式名(引數1,引數2,引數3,.......){內容}

int sum(int a,int b){int c;

return c;}

其中第一個int是返回值 就是別的函式呼叫此函式時這個函式給他的一個值。

如果呼叫時不需要返回值,則函式寫為

void sum(int a,int b){....} 此時函式沒有返回值

如果不需要引數 則int sum(void){...}此時void的意義為空,就是沒有引數的意思如果都不要 則為void sum(void);

9樓:匿名使用者

void是指此函式沒有返回值,而main是函式名,void main 是無返回值的主函式。

c語言是一種結構化的語言,以函式為模組,而無論程式多麼大,主函式有且只能有一個。

關於什麼時候用,這個要看你想把主函式寫到什麼位置了,無論你把主函式寫到什麼位置,c語言總是先從主函式開始執行的。

10樓:匿名使用者

void 的字面意思是「空型別」,void *則為「空型別指標」,void *可以指向任何型別的資料。

看這裡,很詳細

11樓:匿名使用者

void就無需返回值的函式型別符

12樓:善緣戀

定義的什麼 函式就返回什麼 void就是返回空 說白了 就是什麼都不返回 返回值 知道嗎

13樓:泥潭裡的金魚

void中最有用的屬"void*"這個萬能的型別定義了;可以代表任何型別,這個方便我們去寫各種介面,解耦的時候很方面將各種結構體封裝起來,不暴露給使用者:

void* func_get_info()

14樓:不典章佳元綠

【void的含義】

void的字面意思是「無型別」,void

*則為「無型別指標」,void

*可以指向任何型別的資料。

void幾乎只有「註釋」和限制程式的作用,因為從來沒有人會定義一個void變數,

void真正發揮的【作用】在於:

(1)對函式返回的限定;

(2)對函式引數的限定。

15樓:百將帥先行

1.10,void關鍵字

void有什麼好講的呢?如果你認為沒有,那就沒有;但如果你認為有,那就真的有。有點像「色即是空,空即是色」。

1.10.1,void a?

void的字面意思是「空型別」,void*則為「空型別指標」,void*可以指向任何型別的資料。void幾乎只有「註釋」和限制程式的作用,因為從來沒有人會定義一個void變數,看看下面的例子:

voida;

visualc++6.0上,這行語句編譯時會出錯,提示「illegaluseoftype'void'」。不過,即使voida的編譯不會出錯,它也沒有任何實際意義。

void真正發揮的作用在於:

(1) 對函式返回的限定;

(2) 對函式引數的限定。

眾所周知,如果指標p1和p2的型別相同,那麼我們可以直接在p1和p2間互相賦值;如果p1和p2指向不同的資料型別,則必須使用強制型別轉換運算子把賦值運算子右邊的指標型別轉換為左邊指標的型別。

例如:float *p1;

int *p2;

p1=p2;

其中p1=p2語句會編譯出錯,提示「'=':cannotconvertfrom'int*'to'float*'」,必須改為:

p1=(float*)p2;

而void*則不同,任何型別的指標都可以直接賦值給它,無需進行強制型別轉換:

void *p1;

int *p2;

p1=p2;

但這並不意味著,void*也可以無需強制型別轉換地賦給其它型別的指標。因為「空型別」可以包容「有型別」,而「有型別」則不能包容「空型別」。比如,我們可以說「男人和女人都是人」,但不能說「人是男人」或者「人是女人」。

下面的語句編譯出錯:

void *p1;

int *p2;

p2=p1;

提示「'=':cannotconvertfrom'void*'to'int*'」。

1.10.2,void修飾函式返回值和引數

【規則1-33】如果函式沒有返回值,那麼應宣告為void型別

在c語言中,凡不加返回值型別限定的函式,就會被編譯器作為返回整型值處理。但是許多程式設計師卻誤以為其為void型別。例如:

add(inta,intb)

intmain(intargc,char*argv)//甚至很多人以為main函式無返回值

//或是為void型的

程式執行的結果為輸出: 2+3=5

這說明不加返回值說明的函式的確為int函式。

因此,為了避免混亂,我們在編寫c程式時,對於任何函式都必須一個不漏地指定其型別。如果函式沒有返回值,一定要宣告為void型別。這既是程式良好可讀性的需要,也是程式設計規範性的要求。

另外,加上void型別宣告後,也可以發揮**的「自注釋」作用。所謂的**的「自注釋」即**能自己註釋自己。

【規則1-34】如果函式無引數,那麼應宣告其引數為void

在c++語言中宣告一個這樣的函式:

intfunction(void)

則進行下面的呼叫是不合法的:function(2);

因為在c++中,函式引數為void的意思是這個函式不接受任何引數。

但是在turboc2.0中編譯:

#include"stdio.h"

fun()

main()

編譯正確且輸出1,這說明,在c語言中,可以給無引數的函式傳送任意型別的引數,但是在c++編譯器中編譯同樣的**則會出錯。在c++中,不能向無引數的函式傳送任何引數,出錯提示「'fun':functiondoesnottake1parameters」。

所以,無論在c還是c++中,若函式不接受任何引數,一定要指明引數為void。1.10.3,void指標

【規則1-35】千萬小心又小心使用void指標型別。

按照ansi(americannationalstandardsinstitute)標準,不能對void指標進行演算法操作,即下列操作都是不合法的:

void*pvoid;

pvoid++;//ansi:錯誤

pvoid+=1;//ansi:錯誤

ansi標準之所以這樣認定,是因為它堅持:進行演算法操作的指標必須是確定知道其指向資料型別大小的。也就是說必須知道記憶體目的地址的確切值。

例如:int*pint;

pint++;//ansi:正確

但是大名鼎鼎的gnu(gnu'snotunix的遞迴縮寫)則不這麼認定,它指定void*的演算法操作與char*一致。因此下列語句在gnu編譯器中皆正確:

pvoid++;//gnu:正確

pvoid+=1;//gnu:正確

在實際的程式設計中,為符合ansi標準,並提高程式的可移植性,我們可以這樣編寫實現同樣功能的**:

void*pvoid;

(char*)pvoid++;//ansi:正確;gnu:正確

(char*)pvoid+=1;//ansi:錯誤;gnu:正確

gnu和ansi還有一些區別,總體而言,gnu較ansi更「開放」,提供了對更多語法的支援。但是我們在真實設計時,還是應該儘可能地符合ansi標準。

【規則1-36】如果函式的引數可以是任意型別指標,那麼應宣告其引數為void*。

典型的如記憶體操作函式memcpy和memset的函式原型分別為:

void*memcpy(void*dest,constvoid*src,size_tlen);

void*memset(void*buffer,intc,size_tnum);

這樣,任何型別的指標都可以傳入memcpy和memset中,這也真實地體現了記憶體操作函式的意義,因為它操作的物件僅僅是一片記憶體,而不論這片記憶體是什麼型別。如果memcpy和memset的引數型別不是void*,而是char*,那才叫真的奇怪了!這樣的memcpy和memset明顯不是一個「純粹的,脫離低階趣味的」函式!

下面的**執行正確:

例子:memset接受任意型別指標

intintarray_a[100];

memset(intarray_a,0,100*sizeof(int));//將intarray_a清0

例子:memcpy接受任意型別指標

intdestintarray_a[100],srcintarray_a[100];

//將srcintarray_a拷貝給destintarray_a

memcpy(destintarray_a,srcintarray_a,100*sizeof(int));

有趣的是,memcpy和memset函式返回的也是void*型別,標準庫函式的編寫者都不是一般人。

1.10.4,void不能代表一個真實的變數

【規則1-37】void不能代表一個真實的變數。

因為定義變數時必須分配記憶體空間,定義void型別變數,編譯器到底分配多大的記憶體呢。

下面**都企圖讓void代表一個真實的變數,因此都是錯誤的**:

voida;//錯誤

function(voida);//錯誤

void體現了一種抽象,這個世界上的變數都是「有型別」的,譬如一個人不是男人就是女人(人妖不算)。

void的出現只是為了一種抽象的需要,如果你正確地理解了物件導向中「抽象基類」的概念,也很容易理解void資料型別。正如不能給抽象基類定義一個例項,我們也不能定義一個void(讓我們類比的稱void為「抽象資料型別」)變數。

void簡單吧?到底是「色」還是「空」呢?

<<<<<<<<<<<<<,,,複製《c語言深度解剖》上的 >>>>>>>>>>>>>>>>>>>

在C語言中是什麼意思,C語言中 c 是什麼意思?

勢如雲 這是c語言的邏輯運算子 異或 這個 講的非常詳細,我摘抄了一些,詳細的你看以看看。有很例子,好懂!邏輯運算子把各個運算的變數 或常量 連線起來組成一個邏輯表示式。邏輯運算子有4個,它們分別是 邏輯非 邏輯或 邏輯與 異或 在位運算裡面還有 位與 位或 的運算。什麼是邏輯運算 邏輯運算用來判斷...

c語言中extern是什麼意思,在C語言中標頭檔案的extern是什麼意思呢?

extern 宣告的函式是在外部定義的函式例項,最常見的就是通過extern定義在win32 dll定義的非託管函式。 取經人取經 就是全域性變數的意思,在建立工程的情況下,其他檔案也可以呼叫這個變數。 陳振龍 用了extern,就表示這個變數是全域性的和動態的,不存在使用哪一個的問題.比如3號檔案...

C語言中array是什麼意思,c語言中的array 是什麼意思哦

1 陣列,顧名思義,是相同型別的陣列成的一個組,也就是說是把相同型別的一系列資料統一編制到某一個組別中。這樣就可以通過陣列名 索引號簡單快捷的操作大量資料。這就和全校學生一樣,把學生分成多個班級,每個學生都是班級中的一員,如果要找張三,如果沒有班級的話,就要在全校學生中一個一個尋找,一直到找到為止 ...