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