c語言中void的用法
c語言中void的用法的用法你知道嗎?下面小編就跟你們詳細介紹下c語言中void的用法的用法,希望對你們有用。
c語言中void的用法的用法如下:
void指標是什麼?
void指標一般被稱為通用指標或泛指針,它是C關於“純粹地址(raw address)”的一種約定。void指標指向某個物件,但該物件不屬於任何型別。請看下例:
int *ip;
void *p;
在上例中,ip指向一個整型值,而p指向的物件不屬於任何型別。
在C中,任何時候你都可以用其它型別的指標來代替void指標(在C++中同樣可以),或者用void指標來代替其它型別的指標(在C++中需要進行強制轉換),並且不需要進行強制轉換。例如,你可以把char *型別的指標傳遞給需要void指標的函式。
什麼時候使用void指標?
當進行純粹的記憶體操作時,或者傳遞一個指向未定型別的指標時,可以使用void指標。void指標也常常用作函式指標。
有些C程式碼只進行純粹的記憶體操作。在較早版本的C中,這一點是通過字元指標(char *)實現的,但是這容易產生混淆,因為人們不容易判斷一個字元指標究竟是指向一個字串,還是指向一個字元陣列,或者僅僅是指向記憶體中的某個地址。
例如,strcpy()函式將一個字串拷貝到另一個字串中,strncpy()函式將一個字串中的部分內容拷貝到另一個字串中:
char *strepy(char'strl,const char *str2);
char *strncpy(char *strl,const char *str2,size_t n);
memcpy()函式將記憶體中的資料從一個位置拷貝到另一個位置:
void *memcpy(void *addrl,void *addr2,size_t n);
memcpy()函式使用了void指標,以說明該函式只進行純粹的記憶體拷貝,包括NULL字元(零位元組)在內的任何內容都將被拷貝。請看下例:
#include "thingie.h" /* defines struct thingie */
struct thingie *p_src,*p_dest;
/* ... */
memcpy(p_dest,p_src,sizeof(struct thingie) * numThingies);
在上例中,memcpy()函式要拷貝的是存放在structthingie結構體中的某種物件op_dest和p_src都是指向structthingie結構體的指標,memcpy()函式將把從p_src指向的位置開始的sizeof(stuctthingie) *numThingies個位元組的內容拷貝到從p_dest指向的位置開始的一塊記憶體區域中。對memcpy()函式來說,p_dest和p_src都僅僅是指向記憶體中的某個地址的指標。