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

2021-03-11 06:44:02 字數 7529 閱讀 4021

1樓:匿名使用者

中文翻bai譯為「無

型別」。常用

du在程式zhi編寫中對定義函式的引數dao型別、返回版值、函式中指標型別權進行宣告。

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

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

void a;

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

void真正發揮的作用在於:

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

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

2樓:簫聚星月

c語言中來,void是空的意思,代表函式類源型是無bai返回值型別

,免用dureturn語句

void main(void)

第一個void代表返回值zhi為空,即不dao需要返回值。

第二個void表示引數為空,可以忽略掉這個void。

3樓:匿名使用者

void,在各個語言中,基本是通用的,表示無返回值。

4樓:wait_若如初見

void main()表示函式無抄返回值,就是說在程式的結尾處不bai需要加上return 0。du而zhireturn是在函式體中,用來dao返回特定值的。

一個c程式中必須至少有一個函式,而且其中必須有一個並且僅有一個以main為名,這個函式稱為主函式,主函式是整個程式的入口。

c語言中void是什麼意思

5樓:匿名使用者

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

void 的作用

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

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

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

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

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

6樓:鄙視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);

7樓:匿名使用者

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);

8樓:匿名使用者

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

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

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

9樓:匿名使用者

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

看這裡,很詳細

10樓:匿名使用者

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

11樓:善緣戀

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

12樓:泥潭裡的金魚

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

void* func_get_info()

13樓:不典章佳元綠

【void的含義】

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

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

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

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

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

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

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

14樓:百將帥先行

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語言中的void表示什麼意思

void常用在程式編寫中對定義函式的引數型別 返回值 函式中指標型別進行宣告。代表任意型別,而不是空的意思。void 是void型別的指標。void型別的指標的含義是 這是一個指標變數,該指標指向一個 void型別的數。在函式的引數列表和返回值中,void代表的含義是 一個函式形參列表為void,表...

c語言中for是什麼意思C語言中for是什麼意思?

在c語言中,for語句使用最為靈活,它的一般形式為 for 表示式1 表示式2 表示式3 語句它的執行過程如下 先求解表示式1。求解表示式2,若其值為真 非0 則執行for語句中指定的內嵌語句,然後執行下面第3 步 若其值為假 0 則結束迴圈,轉到第5 步。求解表示式3。轉回上面第2 步繼續執行。迴...

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

等於的意思 是賦值的意思。只要理解到 賦值不是等於 就能分辨了。比如 int a a 2 賦值,讓a的值變成2 a原來是多少是不知道的 if a 3 判斷 a是否等於3,此時a的值仍然是2a 這是一個邏輯符號,也就是說,結果是真或者假.a b 當a與b相等時是真,否則為假.還有,迴應一下klboy1...