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文章
484瀏覽量
70994 -
變量
+關注
關注
0文章
614瀏覽量
28821 -
編譯
+關注
關注
0文章
676瀏覽量
33743 -
GNU
+關注
關注
0文章
143瀏覽量
17768 -
void
+關注
關注
0文章
23瀏覽量
10042
發布評論請先 登錄
請問如何傳入void *指針給dll函數
【設計技巧】指針的使用注意事項:空指針、指針賦值、void *指針
什么是void指針?void指針有何功能
C語言void及void指針深層探索
深入了解void指針背后的機理
淺談void 型指針的高階用法

void 型指針的高階用法,你掌握了嗎?

STM32編程:void指針高階用法舉例,設計一個通用掉電存儲子系統

STM32編程:void指針高階用法

評論