亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

深入理解void以及void指針的含義

2020-01-26 16:16:14
字體:
來源:轉載
供稿:網友

void的含義
void即“無類型”,void *則為“無類型指針”,可以指向任何數據類型。

void指針使用規范
void指針可以指向任意類型的數據,亦即可用任意數據類型的指針對void指針賦值。例如:
int *pint;
void *pvoid;
pvoid = pint; /* 不過不能 pint = pvoid; */
如果要將pvoid賦給其他類型指針,則需要強制類型轉換如:pint = (int *)pvoid;


在ANSI C標準中,不允許對void指針進行算術運算如pvoid++或pvoid+=1等,而在GNU中則允許,因為在缺省情況下,GNU認為void *與char *一樣。sizeof( *pvoid )== sizeof( char ).

void的作用
對函數返回的限定。
對函數參數的限定。
當函數不需要返回值時,必須使用void限定。例如: void func(int, int);
當函數不允許接受參數時,必須使用void限定。例如: int func(void)。


由于void指針可以指向任意類型的數據,亦即可用任意數據類型的指針對void指針賦值,因此還可以用void指針來作為函數形參,這樣函數就可以接受任意數據類型的指針作為參數。例如:
void * memcpy( void *dest, const void *src, size_t len );
void * memset( void * buffer, int c, size_t num );

許多初學者對C/C++語言中的void及void指針類型不甚理解,因此在使用上出現了一些錯誤。本文將對void關鍵字的深刻含義進行解說,下面詳述void及void指針類型的使用方法與技巧。

1.規則小心使用void指針類型
  按照ANSI(AmericanNationalStandardsInstitute)標準,不能對void指針進行算法操作,即下列操作都是不合法的:
void*pvoid;
pvoid++;//ANSI:錯誤
pvoid+=1;//ANSI:錯誤
//ANSI標準之所以這樣認定,是因為它堅持:進行算法操作的指針必須是確定知道其指向數據類型大小的。
//例如:
int*pint;
pint++;//ANSI:正確
  pint++的結果是使其增大sizeof(int)。
  但是大名鼎鼎的GNU(GNU'sNotUnix的縮寫)則不這么認定,它指定void*的算法操作與char*一致。
因此下列語句在GNU編譯器中皆正確:
pvoid++;//GNU:正確
pvoid+=1;//GNU:正確
  pvoid++的執行結果是其增大了1。
  在實際的程序設計中,為迎合ANSI標準,并提高程序的可移植性,我們可以這樣編寫實現同樣功能的代碼:
void*pvoid;
(char*)pvoid++;//ANSI:正確;GNU:正確
(char*)pvoid+=1;//ANSI:錯誤;GNU:正確
  GNU和ANSI還有一些區別,總體而言,GNU較ANSI更“開放”,提供了對更多語法的支持。但是我們在真實設計時,還是應該盡可能地迎合ANSI標準。

2.規則二如果函數的參數可以是任意類型指針,那么應聲明其參數為void*
  典型的如內存操作函數memcpy和memset的函數原型分別為:
void*memcpy(void*dest,constvoid*src,size_tlen);  
void*memset(void*buffer,intc,size_tnum);
  這樣,任何類型的指針都可以傳入memcpy和memset中,這也真實地體現了內存操作函數的意義,因為它操作的對象僅僅是一片內存,而不論這片內存是什么類型。如果 memcpy和memset的參數類型不是void*,而是char*,那才叫真的奇怪了!這樣的memcpy和memset明顯不是一個“純粹的,脫離低級趣味的”函數!
下面的代碼執行正確:
//示例:memset接受任意類型指針
int  intarray[100];
memset(intarray,0,100*sizeof(int));//將intarray清0
//示例:memcpy接受任意類型指針
int  intarray1[100],  intarray2[100];
memcpy(intarray1,intarray2,100*sizeof(int));//將intarray2拷貝給intarray1
  有趣的是,memcpy和memset函數返回的也是void*類型,標準庫函數的編寫者是多么地富有學問啊!

3.規則三 void不能代表一個真實的變量
  下面代碼都企圖讓void代表一個真實的變量,因此都是錯誤的代碼:
voida;//錯誤
function(voida);//錯誤
  void體現了一種抽象,這個世界上的變量都是“有類型”的,譬如一個人不是男人就是女人(還有人妖?)。
  void的出現只是為了一種抽象的需要,如果你正確地理解了面向對象中“抽象基類”的概念,也很容易理解void數據類型。正如不能給抽象基類定義一個實例,我們也不能定義一個void(讓我們類比的稱void為“抽象數據類型”)變量。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线中文字幕| 国产一区欧美二区三区| 国产69久久精品成人| 国产欧美精品一区二区三区-老狼| 亚洲精品福利免费在线观看| 欧美成年人视频| 欧美日韩一区免费| 亚洲国产精品电影在线观看| 亚洲精品视频在线观看视频| 久久在线免费视频| 亚洲女人被黑人巨大进入al| 国产成人在线精品| 国产精品久久久亚洲| 中文字幕日韩综合av| 国产在线观看精品一区二区三区| 亚洲欧洲自拍偷拍| 日韩亚洲一区二区| 精品视频—区二区三区免费| www.欧美免费| 亚洲级视频在线观看免费1级| 亚洲国产精彩中文乱码av| 欧美激情网友自拍| 久久亚洲精品国产亚洲老地址| 国产v综合ⅴ日韩v欧美大片| 日韩精品久久久久久福利| 久久伊人色综合| 久久免费福利视频| 青青青国产精品一区二区| 成人黄色在线观看| 国产精品女视频| 国产成人精品网站| 亚州成人av在线| 国内精品久久久久影院优| 精品久久久久久电影| 91大神在线播放精品| 国产激情视频一区| 91在线视频免费| 国语自产偷拍精品视频偷| 国产中文欧美精品| 国产精品大陆在线观看| 日本欧美黄网站| 久久久久久免费精品| 日韩免费高清在线观看| 中文字幕欧美专区| 国产精自产拍久久久久久蜜| 日韩中文字幕第一页| 97精品一区二区视频在线观看| 国产精品稀缺呦系列在线| 92看片淫黄大片欧美看国产片| 亚洲福利视频久久| 日本午夜精品理论片a级appf发布| 青草成人免费视频| 欧美日韩亚洲精品内裤| 免费99精品国产自在在线| 欧美整片在线观看| 国产一区二区三区18| 韩国19禁主播vip福利视频| 久久久精品国产| 欧美日韩高清在线观看| 欧美激情亚洲综合一区| 国产一区二区三区在线观看网站| 欧美电影在线免费观看网站| 欧美尤物巨大精品爽| 精品成人国产在线观看男人呻吟| 中文字幕日韩欧美在线| 久久天天躁狠狠躁夜夜爽蜜月| 黄色精品在线看| 18一19gay欧美视频网站| 亚洲精品美女久久久| 欧美久久精品午夜青青大伊人| 国产精品三级网站| 精品国内自产拍在线观看| 欧美日本高清一区| 亚洲欧美日韩国产中文| 亚洲第一视频网| 久久99亚洲热视| 91欧美日韩一区| 国产精品第七影院| 成人免费网视频| 久久精品国产亚洲7777| 久久久久久尹人网香蕉| 91精品国产自产91精品| 亚洲天堂男人的天堂| 国产日韩在线免费| 欧美成人高清视频| 最好看的2019年中文视频| 国产精品第8页| 九色成人免费视频| 精品久久久国产精品999| 日韩电影在线观看永久视频免费网站| 欧美日韩福利电影| 国产美女精品视频免费观看| 日韩资源在线观看| 欧美亚洲在线视频| 人人做人人澡人人爽欧美| 欧美劲爆第一页| 亚洲成av人片在线观看香蕉| 亚洲福利在线观看| 久久久久久欧美| 亚洲人成电影网站色…| 中文字幕亚洲无线码a| 欧美孕妇与黑人孕交| 亚洲精品v欧美精品v日韩精品| 中文字幕亚洲欧美日韩2019| 国产精品狼人色视频一区| 欧美日韩国产色| 欧美激情视频在线免费观看 欧美视频免费一| 国产精品久久久久久久app| 国产日韩欧美另类| 欧美洲成人男女午夜视频| 欧美日韩加勒比精品一区| 亚洲第一偷拍网| 欧美特级www| 亚洲跨种族黑人xxx| 日韩精品在线看| 日韩电影中文 亚洲精品乱码| 亚洲第一中文字幕在线观看| 成人欧美一区二区三区在线湿哒哒| 97精品视频在线播放| 亚洲国产欧美一区二区丝袜黑人| 欧美日韩一区二区在线播放| 欧美亚洲成人精品| 国产成人亚洲综合青青| 亚洲精品影视在线观看| 最近2019中文免费高清视频观看www99| 亚洲欧美色图片| 亚洲欧美激情精品一区二区| 97视频在线观看网址| 日韩精品久久久久久久玫瑰园| 亚洲欧美国产高清va在线播| 国产男人精品视频| 欧美成人激情视频免费观看| 亚洲男人av电影| 亚洲国产精品资源| 中文字幕久久久av一区| 国产精品入口免费视| 欧美日韩美女在线观看| 色偷偷av一区二区三区乱| 久久久久久久999| 91在线直播亚洲| 青草成人免费视频| 热re99久久精品国产66热| 一区二区三区四区精品| 国产美女精品视频免费观看| 国产精品高潮呻吟久久av野狼| 欧美日韩成人在线视频| 国产欧美精品一区二区三区介绍| 亚洲欧洲日产国码av系列天堂| 日韩中文字幕欧美| 亚洲精品99久久久久中文字幕| 亚洲大胆人体av| 欧美成人精品在线视频| 国产日韩精品综合网站| 日韩大片在线观看视频| 日韩av色在线| 色噜噜狠狠色综合网图区| 亚洲女性裸体视频| 亚洲精品资源美女情侣酒店| 91黑丝在线观看| 日韩精品小视频| 久久亚洲精品中文字幕冲田杏梨| 欧亚精品中文字幕| 欧美极度另类性三渗透| 精品久久久久久久久久ntr影视|