c语言void*指针,C语言void指针
C語言void指針教程
在 void 的意思就是 “無類型”,void 指針則為 “無類型指針”,void 指針可以指向
void指針使用
在 C 語言中在任何時候都可以用 void 類型的指針來代替其他類型的指針,void 指針可以指向任何數(shù)據(jù)類型的變量。
如果要通過 void 指針去獲取它所指向的變量值時候,需要先將 void 指針強(qiáng)制類型轉(zhuǎn)換成和變量名類型相匹配的數(shù)據(jù)類型指針后再進(jìn)行操作。
任何類型的指針都可以賦值給 void 指針,無需進(jìn)行強(qiáng)制類型轉(zhuǎn)換。
C語言void指針詳解
定義
void *p
說明
我們使用 void * 定義了一個萬能指針。
void指針使用場景
對函數(shù)參數(shù)的限定。
對函數(shù)返回的限定。
void 指針也常用作函數(shù)指針。
void指針強(qiáng)制類型轉(zhuǎn)換詳解
語法
*((int*)pa
說明
我們將一個 void 類型的指針 pa,轉(zhuǎn)換成了 int 類型的指針,并取其值。
案例
定義void指針
void 指針可以指向任何數(shù)據(jù)
#include
int main(){
printf("嗨客網(wǎng)(www.haicoder.net)\n\n");
int a = 1024;
void *pa = &a;
printf("pa = %p\n", pa);
return 0;
}
程序運(yùn)行后,控制臺輸出如下圖所示:
我們首先,定義了一個 int 類型的變量 a,接著,我們定義了一個 void 類型的指針,該指針用來保存了 int 類型的變量的地址,因此,我們可以看出,void 指針可以保存任何數(shù)據(jù)類型的地址。
void指針不可以直接使用
void 指針不可以直接使用,必須經(jīng)過類型轉(zhuǎn)換后才可以使用
#include
int main(){
printf("嗨客網(wǎng)(www.haicoder.net)\n\n");
int a = 1024;
void *pa = &a;
printf("pa = %p, *pa = %d\n", pa, *pa);
return 0;
}
程序運(yùn)行后,控制臺輸出如下圖所示:
我們直接使用 *pa,打印了 void 指針指向的變量的值,我們發(fā)現(xiàn)程序報錯,因?yàn)?#xff0c;void 指針不可以直接使用,必須經(jīng)過
#include
int main(){
printf("嗨客網(wǎng)(www.haicoder.net)\n\n");
int a = 1024;
void *pa = &a;
printf("pa = %p, *pa = %d\n", pa, *((int*)pa));
return 0;
}
程序運(yùn)行后,控制臺輸出如下圖所示:
這次,我們在打印的時候,將 void 指針強(qiáng)制類型轉(zhuǎn)換成了 int 指針,最后,我們看到可以正確輸出了 void 指針指向的值,因此,void 指針不可以直接使用,必須強(qiáng)制類型轉(zhuǎn)換后才可以使用。
任何指針都可以賦值給void指針
任何指針無需強(qiáng)制類型轉(zhuǎn)換,都可以賦值給 void 指針
#include
int main(){
printf("嗨客網(wǎng)(www.haicoder.net)\n\n");
int *pa;
double *pb;
long *pc;
void *vpa = pa;
vpa = pb;
vpa = pc;
return 0;
}
程序運(yùn)行后,控制臺輸出如下圖所示:
我們可以看到,我們分別將 int 類型的指針、double 類型的指針和 long 類型的指針賦值給了 void 類型的指針,因此,我們可以看出,void 類型的指針可以接受任何類型的指針變量。
C語言void指針總結(jié)
在 C 語言中,void 指針可以指向任何類型的數(shù)據(jù)。所以 void 指針一般被稱為通用指針或者泛指針,也可以叫做萬能指針。在 C 語言中在任何時候都可以用 void 類型的指針來代替其他類型的指針,void 指針可以指向任何數(shù)據(jù)類型的變量。
如果要通過 void 指針去獲取它所指向的變量值時候,需要先將 void 指針強(qiáng)制類型轉(zhuǎn)換成和變量名類型相匹配的數(shù)據(jù)類型指針后再進(jìn)行操作。任何類型的指針都可以賦值給 void 指針,無需進(jìn)行強(qiáng)制類型轉(zhuǎn)換。
總結(jié)
以上是生活随笔為你收集整理的c语言void*指针,C语言void指针的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FFmpeg安装及将rtsp流转hls协
- 下一篇: 关于流媒体压缩的问题xvidcore的问