商務英語計算機英語

c語言中void的用法

本文已影響 3.05W人 

c語言中void的用法的用法你知道嗎?下面小編就跟你們詳細介紹下c語言中void的用法的用法,希望對你們有用。

padding-bottom: 75%;">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都僅僅是指向內存中的某個地址的指針。

猜你喜歡

熱點閱讀

最新文章