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

首頁 > 編程 > C > 正文

void及void指針的含義是什么

2020-02-24 14:30:20
字體:
來源:轉載
供稿:網友

void及void指針的含義是什么?相信很多人都還是不了解的,那么我們現在就去看看void以及void指針的含義,感興趣的小伙伴們一起來看看吧。

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為“抽象數據類型”)變量。

以上就是關于void及void指針的含義是什么的內容,希望對大家的學習有所幫助,也希望大家多多支持武林技術頻道。

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

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
性欧美暴力猛交69hd| 亚洲成人a**站| 亚洲美女av网站| 欧美性xxxxhd| 国产精品久久99久久| 久久影视三级福利片| 日韩成人在线电影网| 亚洲精品国产精品久久清纯直播| 91成人国产在线观看| 国产精品午夜一区二区欲梦| 另类视频在线观看| 中文字幕精品www乱入免费视频| 久久精品国产2020观看福利| 国产精品久久久91| 久久久久久久久久久人体| 国产精品久久久999| 97精品国产97久久久久久| 日韩av电影院| 91高清视频免费观看| 欧美精品在线观看| 日韩小视频网址| 97精品国产97久久久久久春色| 一夜七次郎国产精品亚洲| 欧美有码在线视频| 欧美另类在线播放| 欧美大全免费观看电视剧大泉洋| 欧美色欧美亚洲高清在线视频| 国产精品一区专区欧美日韩| 久久综合色影院| 亚洲乱码国产乱码精品精| 国产精品高精视频免费| 亚洲欧美在线播放| 色综合亚洲精品激情狠狠| 亚洲视频综合网| 色爱精品视频一区| 国产日韩欧美自拍| 国产剧情久久久久久| 欧美视频在线观看 亚洲欧| 亚洲激情视频网| 亚洲激情自拍图| 97人人模人人爽人人喊中文字| 国产视频在线一区二区| 97视频在线看| 久久免费视频网| 九九热精品在线| 亚洲国产免费av| 超碰精品一区二区三区乱码| 日韩欧美高清视频| 国产69精品久久久久久| 欧美日韩国产中文精品字幕自在自线| 精品动漫一区二区三区| 亚洲视频在线观看| 国产一区二区黄| 久久香蕉国产线看观看av| 国产亚洲视频在线观看| 国内精品视频一区| 久久久久久av| 久久精品国产欧美亚洲人人爽| 97精品一区二区视频在线观看| 理论片在线不卡免费观看| 中文字幕亚洲一区二区三区五十路| 国产69精品久久久| 最近2019中文字幕大全第二页| 欧美黑人一级爽快片淫片高清| 久久不射热爱视频精品| 亚洲r级在线观看| 亚洲bt欧美bt日本bt| 亚洲成年人影院在线| 5252色成人免费视频| 亚洲精品aⅴ中文字幕乱码| 成人免费网站在线看| 日韩成人网免费视频| 精品国产一区久久久| 日韩中文字幕精品| 久久视频中文字幕| 欧美最猛性xxxxx(亚洲精品)| 欧美激情视频一区二区| 97在线免费观看视频| 久久成年人免费电影| 色多多国产成人永久免费网站| 91亚洲永久免费精品| 中文字幕国产亚洲2019| 日韩中文字幕在线观看| 亚洲精品在线视频| 成人性生交大片免费看小说| 最近2019年日本中文免费字幕| 欧美性感美女h网站在线观看免费| 久久国产精品电影| 欧美性猛交xxxx黑人| 国产精品va在线| 九九热精品视频在线播放| 亚洲国产婷婷香蕉久久久久久| 精品日韩中文字幕| 亚洲性日韩精品一区二区| 国产精品久久久久7777婷婷| 中文字幕欧美日韩在线| 麻豆精品精华液| 亚洲精品国产suv| 福利视频导航一区| 国产精品99久久久久久久久久久久| 在线播放国产一区中文字幕剧情欧美| 伦伦影院午夜日韩欧美限制| 亚洲精品美女在线观看播放| 精品国产依人香蕉在线精品| 欧美裸身视频免费观看| 亚洲男人av在线| 国产精品免费久久久| 精品欧美一区二区三区| 91大神福利视频在线| 精品国产一区二区三区四区在线观看| 日韩成人av网| 亚洲成人网av| 黑人巨大精品欧美一区免费视频| 久久精品色欧美aⅴ一区二区| 国产伦精品免费视频| 日韩在线www| 亚洲sss综合天堂久久| 国产在线精品自拍| 精品欧美国产一区二区三区| 97在线观看视频国产| 亚洲自拍偷拍网址| 国产精品久久久一区| 萌白酱国产一区二区| 91精品国产高清自在线| 国产精品吴梦梦| 久久精品国产亚洲一区二区| 91老司机在线| 久久久精品久久| 性日韩欧美在线视频| 红桃视频成人在线观看| 亚洲一区二区免费在线| 日本19禁啪啪免费观看www| 国产亚洲视频在线| 亚洲精品美女久久| 日韩精品中文字幕在线| 久久影院资源网| 亚洲国产精品人久久电影| 在线播放日韩欧美| 久久av中文字幕| 91理论片午午论夜理片久久| 亚洲男人第一av网站| 北条麻妃在线一区二区| 国产精品欧美一区二区三区奶水| 亚洲国产又黄又爽女人高潮的| 亚洲欧美在线x视频| 国产成人一区二区三区电影| 色婷婷**av毛片一区| 亚洲国产免费av| 国产精品久久久久久久久久久不卡| 欧美有码在线观看视频| 中文字幕日韩欧美精品在线观看| 韩国精品久久久999| 国产精品国产自产拍高清av水多| 国内精品模特av私拍在线观看| 成人做爽爽免费视频| 国产91在线播放九色快色| 国产一区二区三区久久精品| 欧美亚洲成人免费| 午夜精品视频网站| 成人免费福利在线| 日韩性生活视频| 国产精品男女猛烈高潮激情| 色婷婷av一区二区三区在线观看| 国产热re99久久6国产精品|