1、指針介紹:
普通類型指針,包含兩個(gè)方面,一個(gè)是指向此類型變量的地址,另外一個(gè)是指向變量的長(zhǎng)度。 如下:
*int p:
p指針指向int類型變量,p++相當(dāng)于地址加4(32位處理器)。
*unsigned char p:
p指針指向unsigned char類型變量,p++相當(dāng)于地址加1。
2、void指針有以下特性
1、void型指針比較特殊,一般稱作泛指針,它沒有任何類型,更沒有了長(zhǎng)度屬性。
2、任何類型指針都可以賦值給void類型指針,并且不需要強(qiáng)制轉(zhuǎn)換,也不會(huì)出現(xiàn)編譯警告或者編譯錯(cuò)誤。 但是反過來則不行,必須進(jìn)行強(qiáng)制轉(zhuǎn)換才能賦值。 強(qiáng)制轉(zhuǎn)換為了告訴編譯器類型以及長(zhǎng)度。
3、void型指針在ANSI規(guī)則下不能自加自減等,如下代碼都是錯(cuò)誤的。
//ANSI規(guī)則下以下運(yùn)算都是錯(cuò)誤的
void *p;
int data;
p++;
p
p = p + 1;
data = *p;
4、但是void指針在GNU規(guī)則下可以自加自減等,GNU認(rèn)為void類型指針長(zhǎng)度和char類型長(zhǎng)度一樣。 鑒于兩種規(guī)則的不同,我們編寫代碼是要做好兼容性,防止代碼移植出現(xiàn)不可預(yù)知問題。
void *p;
p++;
p--;
p = p + 1;
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
相關(guān)推薦
為何在這里單獨(dú)提到空指針類型呢?主要是因?yàn)樵?b class='flag-5'>指針類型很特殊。void類型很容易讓人想到是空的意思,但對(duì)于指針而言,其并不是指空,而是指不確定。在很多時(shí)候
發(fā)表于 09-09 08:57
?1668次閱讀
C語言中,*類型就是指針類型,比如 int *p,double *q,雖然是不一樣的指針,但是大小卻一樣sizeof(p) == sizeof(q),因?yàn)樗鼈兌际峭环N類型*類型的。C語言是強(qiáng)類型的語言,對(duì)類型的區(qū)分十分嚴(yán)格,不同的類型占據(jù)的空間大小不同,地址偏移量也會(huì)不
發(fā)表于 02-01 09:26
?1060次閱讀
的類型多么復(fù)雜,比如一個(gè)特別大的結(jié)構(gòu)體,它的指針和一個(gè) char型指針的大小本質(zhì)上是一樣的,因?yàn)?b class='flag-5'>指針就是起始地址。 正式由于這個(gè)原因,(void )型
發(fā)表于 08-20 08:30
[導(dǎo)讀] 要比較靈活的使用C語言實(shí)現(xiàn)一些高層級(jí)的框架時(shí),需要掌握一些進(jìn)階編程技巧,這篇來談?wù)?b class='flag-5'>void指針的一些妙用。測(cè)試環(huán)境采用 IAR for ARM 8.40.1什么是void指針
發(fā)表于 02-21 06:01
1.概述 本文將對(duì)void關(guān)鍵字的深刻含義進(jìn)行解說,并詳述void及void指針類型的使用方法與技巧。 2.void的含義
發(fā)表于 09-21 11:36
?166次下載
C語言指針函數(shù)和函數(shù)指針詳細(xì)介紹。。。。。。。
發(fā)表于 03-04 15:27
?5次下載
當(dāng)使用關(guān)鍵字void聲明指針變量時(shí),它將成為通用指針變量。任何數(shù)據(jù)類型(char,int,float等)的任何變量的地址都可以賦值給void指針
發(fā)表于 05-06 09:49
?1343次閱讀
要比較靈活的使用C語言實(shí)現(xiàn)一些高層級(jí)的框架時(shí),需要掌握一些進(jìn)階編程技巧,這篇來談?wù)?b class='flag-5'>void指針的一些妙用。測(cè)試環(huán)境采用 IAR for ARM 8.40.1 什么是void指針
發(fā)表于 08-09 15:54
?1609次閱讀
關(guān)注+星標(biāo)公眾號(hào),不錯(cuò)過精彩內(nèi)容轉(zhuǎn)自 | 嵌入式客棧要比較靈活的使用C語言實(shí)現(xiàn)一些高層級(jí)的框架時(shí),需要掌握一些進(jìn)階編程技巧,這篇來談?wù)?b class='flag-5'>void指針的一些妙用。測(cè)試環(huán)境采用 IAR for ...
發(fā)表于 12-02 12:36
?8次下載
[導(dǎo)讀] 要比較靈活的使用C語言實(shí)現(xiàn)一些高層級(jí)的框架時(shí),需要掌握一些進(jìn)階編程技巧,這篇來談?wù)?b class='flag-5'>void指針的一些妙用。測(cè)試環(huán)境采用 IAR for ARM 8.40.1什么是void指針
發(fā)表于 12-27 18:47
?10次下載
[導(dǎo)讀] 要比較靈活的使用C語言實(shí)現(xiàn)一些高層級(jí)的框架時(shí),需要掌握一些進(jìn)階編程技巧,這篇來談?wù)?b class='flag-5'>void指針的一些妙用。測(cè)試環(huán)境采用 IAR fo...
發(fā)表于 02-07 11:14
?2次下載
空類型`。 void abc; //這是錯(cuò)誤的 但是`void`是可以定義指針的,`void*`表示萬能型指針類型,可以與任何
發(fā)表于 08-14 10:04
?1747次閱讀
void *表示一個(gè)“不知道類型”的指針,也就不知道從這個(gè)指針地址開始多少字節(jié)為一個(gè)數(shù)據(jù)。和用int表示指針異曲同工,只是更明確是“指針”。
發(fā)表于 02-02 17:18
?1513次閱讀
C語言中,*類型就是指針類型,比如 int *p,double *q,雖然是不一樣的指針,但是大小卻一樣sizeof(p) == sizeof(q),因?yàn)樗鼈兌际峭环N類型*類型的。C語言是強(qiáng)類型的語言,對(duì)類型的區(qū)分十分嚴(yán)格,不同的類型占據(jù)的空間大小不同,地址偏移量也會(huì)不
發(fā)表于 02-13 15:02
?1352次閱讀
首先void*中的void代表一個(gè)任意的數(shù)據(jù)類型,"星號(hào)"代表一個(gè)指針,所以其就是一個(gè)任意數(shù)據(jù)類型的指針。
發(fā)表于 03-30 15:01
?4100次閱讀
評(píng)論