C語言void指針教程
在 void 的意思就是 “無類型”,void 指針則為 “無類型指針”,void 指針可以指向
void指針使用
在 C 語言中在任何時候都可以用 void 類型的指針來代替其他類型的指針,void 指針可以指向任何數據類型的變量。
如果要通過 void 指針去獲取它所指向的變量值時候,需要先將 void 指針強制類型轉換成和變量名類型相匹配的數據類型指針后再進行操作。
任何類型的指針都可以賦值給 void 指針,無需進行強制類型轉換。
C語言void指針詳解
定義
void *p
說明
我們使用 void * 定義了一個萬能指針。
void指針使用場景
對函數參數的限定。
對函數返回的限定。
void 指針也常用作函數指針。
void指針強制類型轉換詳解
語法
*((int*)pa
說明
我們將一個 void 類型的指針 pa,轉換成了 int 類型的指針,并取其值。
案例
定義void指針
void 指針可以指向任何數據
#include
int main(){
printf("嗨客網(www.haicoder.net)\n\n");
int a = 1024;
void *pa = &a;
printf("pa = %p\n", pa);
return 0;
}
程序運行后,控制臺輸出如下圖所示:
我們首先,定義了一個 int 類型的變量 a,接著,我們定義了一個 void 類型的指針,該指針用來保存了 int 類型的變量的地址,因此,我們可以看出,void 指針可以保存任何數據類型的地址。
void指針不可以直接使用
void 指針不可以直接使用,必須經過類型轉換后才可以使用
#include
int main(){
printf("嗨客網(www.haicoder.net)\n\n");
int a = 1024;
void *pa = &a;
printf("pa = %p, *pa = %d\n", pa, *pa);
return 0;
}
程序運行后,控制臺輸出如下圖所示:
我們直接使用 *pa,打印了 void 指針指向的變量的值,我們發現程序報錯,因為,void 指針不可以直接使用,必須經過
#include
int main(){
printf("嗨客網(www.haicoder.net)\n\n");
int a = 1024;
void *pa = &a;
printf("pa = %p, *pa = %d\n", pa, *((int*)pa));
return 0;
}
程序運行后,控制臺輸出如下圖所示:
這次,我們在打印的時候,將 void 指針強制類型轉換成了 int 指針,最后,我們看到可以正確輸出了 void 指針指向的值,因此,void 指針不可以直接使用,必須強制類型轉換后才可以使用。
任何指針都可以賦值給void指針
任何指針無需強制類型轉換,都可以賦值給 void 指針
#include
int main(){
printf("嗨客網(www.haicoder.net)\n\n");
int *pa;
double *pb;
long *pc;
void *vpa = pa;
vpa = pb;
vpa = pc;
return 0;
}
程序運行后,控制臺輸出如下圖所示:
我們可以看到,我們分別將 int 類型的指針、double 類型的指針和 long 類型的指針賦值給了 void 類型的指針,因此,我們可以看出,void 類型的指針可以接受任何類型的指針變量。
C語言void指針總結
在 C 語言中,void 指針可以指向任何類型的數據。所以 void 指針一般被稱為通用指針或者泛指針,也可以叫做萬能指針。在 C 語言中在任何時候都可以用 void 類型的指針來代替其他類型的指針,void 指針可以指向任何數據類型的變量。
如果要通過 void 指針去獲取它所指向的變量值時候,需要先將 void 指針強制類型轉換成和變量名類型相匹配的數據類型指針后再進行操作。任何類型的指針都可以賦值給 void 指針,無需進行強制類型轉換。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
請教寶路華手表怎么樣?包華手表在歐美國家非常有名。在我們國家,到了一定年齡的長輩也懂點東西。這是一塊完整的瑞士手表。它的價格不是很高,普通款2000-6000左右。高端的有幾個W碼?,F在很多白領都有布魯華手表,你可以找身邊的朋友打個電話聯系布魯華公司,或者登陸布魯華中文網。瑞士手表寶路華怎樣?包華寶路華手表屬于中低檔瑞士品牌手表。主要是價格比較便宜,用的是塞利塔公司的機芯?;蛘咧饕悄7掳K\動。...
奔騰電磁爐質量怎么樣?質量好。這款電磁爐的賣點是黑晶面板4D防水抑噪非常出色,做工和細節設計都非常出色。功率2100w,9檔火力調節,定時功能,標配湯鍋煎鍋。八檔火力,觸控面板,定時功能,內部防水墻設計,變頻風扇對噪音抑制很有幫助。雖然介紹中沒有注明線圈尺寸,但是這個價格大概率在150mm左右。奔騰電器質量咋樣?打算買奔騰電磁爐?奔騰電器質量還可以。我家里用的是奔騰電磁爐。一般來說,電磁爐可以用2...
北京國家會議中心在什么地方?公交路線:地鐵4號線大興線地鐵2號線地鐵8號線,全程約23.4公里。1.從公益西橋乘坐地鐵4號線大興線,經過6站到達宣武門站。2.乘坐地鐵2號線,經過7站,到達鼓樓街站。3.乘坐地鐵8號線,經過4站,到達奧林匹克公園站(E出口)。4.步行約440米至國家會議中心。北京國家會議中心在什么地方?我想參加CP05伴侶節…但是不知道國家會議中心在哪里?地鐵可以直達嗎?我住的地方...