1、指針介紹:
普通類型指針,包含兩個方面,一個是指向此類型變量的地址,另外一個是指向變量的長度。 如下:
*int p:
p指針指向int類型變量,p++相當于地址加4(32位處理器)。
*unsigned char p:
p指針指向unsigned char類型變量,p++相當于地址加1。
2、void指針有以下特性
1、void型指針比較特殊,一般稱作泛指針,它沒有任何類型,更沒有了長度屬性。
2、任何類型指針都可以賦值給void類型指針,并且不需要強制轉換,也不會出現編譯警告或者編譯錯誤。 但是反過來則不行,必須進行強制轉換才能賦值。 強制轉換為了告訴編譯器類型以及長度。
3、void型指針在ANSI規則下不能自加自減等,如下代碼都是錯誤的。
//ANSI規則下以下運算都是錯誤的
void *p;
int data;
p++;
p--;
p = p + 1;
data = *p;
4、但是void指針在GNU規則下可以自加自減等,GNU認為void類型指針長度和char類型長度一樣。 鑒于兩種規則的不同,我們編寫代碼是要做好兼容性,防止代碼移植出現不可預知問題。
//GNU規則下以下運算正確
void *p;
p++;
p--;
p = p + 1;
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
指針
+關注
關注
1文章
480瀏覽量
70551 -
變量
+關注
關注
0文章
613瀏覽量
28360 -
編譯
+關注
關注
0文章
657瀏覽量
32852 -
GNU
+關注
關注
0文章
143瀏覽量
17492 -
void
+關注
關注
0文章
23瀏覽量
9866
發布評論請先 登錄
相關推薦
C語言中void指針的基本認識及典型應用
C語言中,*類型就是指針類型,比如 int *p,double *q,雖然是不一樣的指針,但是大小卻一樣sizeof(p) == sizeof(q),因為它們都是同一種類型*類型的。C語言是強類型的語言,對類型的區分十分嚴格,不同的類型占據的空間大小不同,地址偏移量也會不
發表于 02-01 09:26
?1097次閱讀
【設計技巧】指針的使用注意事項:空指針、指針賦值、void *指針
的類型多么復雜,比如一個特別大的結構體,它的指針和一個 char型指針的大小本質上是一樣的,因為指針就是起始地址。 正式由于這個原因,(void )型
發表于 08-20 08:30
什么是void指針?void指針有何功能
[導讀] 要比較靈活的使用C語言實現一些高層級的框架時,需要掌握一些進階編程技巧,這篇來談談void指針的一些妙用。測試環境采用 IAR for ARM 8.40.1什么是void指針
發表于 02-21 06:01
C語言void及void指針深層探索
1.概述 本文將對void關鍵字的深刻含義進行解說,并詳述void及void指針類型的使用方法與技巧。 2.void的含義
發表于 09-21 11:36
?166次下載
深入了解void指針背后的機理
當使用關鍵字void聲明指針變量時,它將成為通用指針變量。任何數據類型(char,int,float等)的任何變量的地址都可以賦值給void指針
發表于 05-06 09:49
?1357次閱讀
淺談void 型指針的高階用法
要比較靈活的使用C語言實現一些高層級的框架時,需要掌握一些進階編程技巧,這篇來談談void指針的一些妙用。測試環境采用 IAR for ARM 8.40.1 什么是void指針
void 型指針的高階用法,你掌握了嗎?
關注+星標公眾號,不錯過精彩內容轉自 | 嵌入式客棧要比較靈活的使用C語言實現一些高層級的框架時,需要掌握一些進階編程技巧,這篇來談談void指針的一些妙用。測試環境采用 IAR for ...
發表于 12-02 12:36
?8次下載
STM32編程:void指針高階用法舉例,設計一個通用掉電存儲子系統
[導讀] 要比較靈活的使用C語言實現一些高層級的框架時,需要掌握一些進階編程技巧,這篇來談談void指針的一些妙用。測試環境采用 IAR for ARM 8.40.1什么是void指針
發表于 12-27 18:47
?10次下載
STM32編程:void指針高階用法
[導讀] 要比較靈活的使用C語言實現一些高層級的框架時,需要掌握一些進階編程技巧,這篇來談談void指針的一些妙用。測試環境采用 IAR fo...
發表于 02-07 11:14
?2次下載
C語言-void類型作為萬能指針類型
空類型`。 void abc; //這是錯誤的 但是`void`是可以定義指針的,`void*`表示萬能型指針類型,可以與任何
一文揭秘C語言的void指針
void *表示一個“不知道類型”的指針,也就不知道從這個指針地址開始多少字節為一個數據。和用int表示指針異曲同工,只是更明確是“指針”。
什么是void指針
C語言中,*類型就是指針類型,比如 int *p,double *q,雖然是不一樣的指針,但是大小卻一樣sizeof(p) == sizeof(q),因為它們都是同一種類型*類型的。C語言是強類型的語言,對類型的區分十分嚴格,不同的類型占據的空間大小不同,地址偏移量也會不
評論