發(fā)布時間:2021-09-30 16:35:32來源:有考培訓(xùn)網(wǎng)綜合
北京達內(nèi)C語言培訓(xùn)班怎么樣?在C語言中,凡是不加返回值類型限定的函數(shù),就會被編譯器作為返回整形值處理,但很多程序員卻誤認為其為void類型。
北京達內(nèi)C語言培訓(xùn)班怎么樣?
作為國內(nèi)IT培訓(xùn)的實力品牌,達內(nèi)集團的每一名員工都以"幫助每一個學(xué)員成就夢想"為己任,也正因為達內(nèi)人的執(zhí)著與努力,達內(nèi)堅持為社會輸送合格人才,為中國IT行業(yè)的發(fā)展做出了貢獻。
1.任何類型的指針都可以直接賦值給void*類型的指針,無需進行強制類型轉(zhuǎn)換。但是void*指針卻不可以不進行強制類型轉(zhuǎn)換而直接就賦值給其他類型的指針。
2.如果函數(shù)沒有返回值,應(yīng)聲明為void類型。
3.如果函數(shù)無參數(shù),那么應(yīng)聲明其參數(shù)為void類型。在C語言中可以給無參數(shù)的函數(shù)傳送任意類型的參數(shù),但是在C++中不能向無參數(shù)的函數(shù)傳送任何參數(shù),錯誤提示:function does not take 1 parameters.所以無論是C還是C++,若函數(shù)不接受任何參數(shù),應(yīng)將其聲明為void類型。
4按照ANSI(American National Standards Institute)標準,不能對void指針進行算法操作,這是因為ANSI標準認定:進行算法操作的指針必須是確定知道其指向類型大小的。例如:
int *ptr;
ptr++;
ptr++的結(jié)果是使其增大sizeof(int).
但是GNU則不這么認定,它指定void*的算法操作和char*一致。
5.如果函數(shù)的參數(shù)可以是任意類型指針,那么應(yīng)將其聲明為void*類型。
典型的如內(nèi)存操作函數(shù):
void * memcpy(void *dest, const void *src, size_t len);
void * memset(void *buffer, int c,size_t num);
這樣,任何類型的指針都可以傳入memcpy和memset中,這也真實的體現(xiàn)了內(nèi)存操作函數(shù)的意義,因為它操作的對象僅僅是一片內(nèi)存,而無論這片內(nèi)存是什么類型!
6.void不能代表一個真實的變量,如void a;錯誤。