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

首頁 > 編程 > C > 正文

深入學習C語言中memset()函數的用法

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

頭文件:

#include <string.h>

memset() 函數用來將指定內存的前n個字節設置為特定的值,其原型為:
  

 void * memset( void * ptr, int value, size_t num );

參數說明:
ptr 為要操作的內存的指針。
value 為要設置的值。你既可以向 value 傳遞 int 類型的值,也可以傳遞 char 類型的值,int 和 char 可以根據 ASCII 碼相互轉換。
num 為 ptr 的前 num 個字節,size_t 就是unsigned int。

【函數說明】memset() 會將 ptr 所指的內存區域的前 num 個字節的值都設置為 value,然后返回指向 ptr 的指針。

memset() 可以將一段內存空間全部設置為特定的值,所以經常用來初始化字符數組。例如:

char str[20];memset(str, '/0', sizeof(str)-1);

【返回值】返回指向 ptr 的指針。

注意:參數 value 雖聲明為 int,但必須是 unsigned char,所以范圍在0 到255 之間。

范例:

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ // 不可以聲明為 char *str = "http://c.biancheng.net"; char str[] = "http://c.biancheng.net"; memset(str, '-', 7); puts(str); system("pause"); return EXIT_SUCCESS;}

執行結果:

-------c.biancheng.net

優化:盡量用memset將一個數組設置清零(帶虛類除外),而不是通過for循環逐個置0
  
    下面這個例子,大家可以參考:3D游戲編程大師技巧。本文其實重點是memset,原因是在工作中,用的比較多。
 
    例如:要清空一個float f[10000],應該用memset(f,0,sizeof(float) * 10000);
    而不是: for(int i=0; i<10000; ++i) f[i] = 0;
    當然,還可以用內嵌匯編的形式:
   

 _asm  {  mov edi, f;  // edi指向數組地的目標內存的起始處  mov ecx, 1000/4; // 循環次數或移動次數  mov eax, 0;  // 每一次移動32位數,都置0  rep stosd;  // 移動數據  } 

 
    哈,這個準則有個前提,那就是帶虛的類除外,原因是,memset將類清空,有可能將虛表也給置0了。
有可能是因為:類的創建分:棧上和堆上。
   如果在棧上,那么棧對象的虛函數調用可能會在靜態時確定,從而繞過虛表。所以不會出錯。
   但堆上就一定會出錯,下面給出測試代碼:

class CMemsetVirtualTest // 測試 帶虛類,被memset為0后,虛表是否失效{public: CMemsetVirtualTest() {  memset(this,0,sizeof(CMemsetVirtualTest)); }  virtual void NormalFun() {  cout<<"test: NormalFun() 虛表指針有效"<<endl; } virtual ~CMemsetVirtualTest() { cout<<"test: ~CMemsetVirtualTest() 虛表指針有效"<<endl; }}; void testFun1() // 測試:棧上建立的對象{ CMemsetVirtualTest Ctest; Ctest.NormalFun();}void testFun2() // 測試:堆上建立的對象{ CMemsetVirtualTest* Ptest = new CMemsetVirtualTest(); Ptest->NormalFun(); // 到這里一定會暴掉 delete Ptest;  // 如果屏蔽上句,到這里也一定會暴掉} int main(){ CMemsetVirtualTest Ctest;// 測試:棧上建立的對象 Ctest.NormalFun();// 測試正常:  CMemsetVirtualTest* Ptest = new CMemsetVirtualTest(); // 測試:堆上建立的對象 Ptest->NormalFun(); // 到這里一定會暴掉 delete Ptest;  // 如果屏蔽上句,到這里也一定會暴掉}

 
   即:
   在C++中,涉及虛技術的類,他的對象內存區塊中就不單純是用戶定義這個類時看上去的那些數據結構,編譯器會在當中安插一些數據或代碼,用來實現響應的虛技術.于是當你用memset函數時會把這些編譯器安插的東西沖掉, 程序執行結果變得未知. 這時候如果拷貝對象C++會使用memberwise拷貝, 此時編譯器既拷貝用戶定義的數據結構,還會對支持虛技術的相關設施進行適當的修改.
   如果對象沒有用到虛技術, 那么就可以使用memset,就跟正常情況一樣,可以逐位拷貝.

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

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产91久久久久久不卡| 久久精品视频亚洲| 91在线无精精品一区二区| 亚洲综合精品伊人久久| 亚洲第一网站男人都懂| 色偷偷av一区二区三区| 日韩大胆人体377p| 日韩美女视频免费看| 日韩欧美在线第一页| 亚洲色图偷窥自拍| 欧美疯狂xxxx大交乱88av| 欧美精品激情在线观看| 亚洲成人黄色网址| 欧美一区二区三区四区在线| 欧美日韩中文在线观看| 97视频免费在线观看| 欧美在线观看一区二区三区| 国产亚洲欧美日韩美女| 尤物tv国产一区| 俺去了亚洲欧美日韩| 欧美丝袜一区二区三区| 欧美激情精品久久久久久| 热久久免费视频精品| 中文字幕一区日韩电影| 欧美激情性做爰免费视频| 欧美肥臀大乳一区二区免费视频| 国产亚洲精品美女久久久| 一道本无吗dⅴd在线播放一区| 国产精品成人久久久久| 亚洲视频在线视频| 亚洲人成77777在线观看网| 亚洲精品美女久久| 精品亚洲一区二区三区在线观看| 亚洲经典中文字幕| 欧美丰满片xxx777| 懂色av影视一区二区三区| 精品女同一区二区三区在线播放| 欧美激情精品久久久久久变态| 欧美性猛交xxxxx免费看| 国产精品久久久久久av福利软件| 国产精品爱啪在线线免费观看| 久久精品成人欧美大片古装| 亚洲国产天堂久久综合网| 亚洲成人久久久久| 欧美日韩国产中文字幕| 久久久久久网址| 亚洲激情在线观看视频免费| 亚洲精品美女视频| 久久69精品久久久久久久电影好| 国产精品久久电影观看| 最新69国产成人精品视频免费| 91在线观看免费高清完整版在线观看| 中文字幕欧美日韩在线| 国产成人精品a视频一区www| 久久97精品久久久久久久不卡| 日产日韩在线亚洲欧美| 国产在线日韩在线| 日韩欧美国产一区二区| 亚洲第一精品福利| 日韩精品久久久久| 欧美国产日韩免费| 久久精品美女视频网站| 黑人精品xxx一区| 日韩av手机在线观看| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品久久久久久久久久ktv| 国产精品久久国产精品99gif| 欧美亚洲成人免费| 国产精品综合不卡av| 亚洲韩国青草视频| 97久久精品人人澡人人爽缅北| 92福利视频午夜1000合集在线观看| 国产精品69久久久久| 欧美色道久久88综合亚洲精品| 青青草一区二区| 亚洲欧美日韩直播| 午夜精品美女自拍福到在线| 日韩精品视频在线观看网址| 国产91在线播放九色快色| 久久精品国产视频| 久久久午夜视频| 国产91精品久久久久久久| 日韩网站在线观看| 日韩av电影在线免费播放| 国产精品成熟老女人| 欧美日韩国产麻豆| 国产小视频国产精品| 中文字幕亚洲欧美日韩2019| 色偷偷偷综合中文字幕;dd| 一区二区三区国产视频| 久久久成人的性感天堂| 国产精品久久久久久久久借妻| 欧美成人精品在线| 隔壁老王国产在线精品| 精品久久久一区| 青草青草久热精品视频在线网站| 国产欧美va欧美va香蕉在| 国产精品自产拍在线观| 日韩av电影中文字幕| 精品视频在线播放色网色视频| 久久久国产一区二区三区| 日韩精品999| 亚洲人成电影网站色xx| 日韩在线不卡视频| 日本午夜精品理论片a级appf发布| 欧美日韩爱爱视频| 一道本无吗dⅴd在线播放一区| 中文字幕亚洲综合久久| 国模视频一区二区三区| 久久视频精品在线| 成人中文字幕+乱码+中文字幕| 91在线免费看网站| 欧美野外猛男的大粗鳮| 日韩av中文字幕在线| 欧美精品videofree1080p| 在线观看中文字幕亚洲| 欧美国产日产韩国视频| 久久精品国产亚洲一区二区| 97国产精品人人爽人人做| 国产视频自拍一区| 69视频在线免费观看| 日本精品视频在线| 亚洲精品wwww| 日韩电影免费观看中文字幕| 欧美午夜精品久久久久久浪潮| 日韩免费观看网站| 亚洲第一av网| 97香蕉久久超级碰碰高清版| 日本sm极度另类视频| 亚洲v日韩v综合v精品v| 日韩av毛片网| 97高清免费视频| 欧美日韩中文字幕在线视频| 一区二区亚洲精品国产| 亚洲国产天堂网精品网站| 久久久久久尹人网香蕉| 97国产精品视频人人做人人爱| 午夜精品99久久免费| 4k岛国日韩精品**专区| 久久久国产视频91| 国内精品久久影院| 97人洗澡人人免费公开视频碰碰碰| 精品日韩视频在线观看| 最近日韩中文字幕中文| 色综久久综合桃花网| 国产成人精品免高潮在线观看| 色阁综合伊人av| 国产做受69高潮| 欧美午夜精品久久久久久浪潮| 欧美成人第一页| 国产精品高潮粉嫩av| 亚洲图片在区色| 欧美性xxxx极品高清hd直播| 欧美性69xxxx肥| 欧美日韩福利电影| 欧美日韩成人黄色| 成人免费淫片视频软件| 狠狠躁夜夜躁人人躁婷婷91| 亚洲日韩欧美视频一区| 欧美视频在线免费看| 国产主播精品在线| 精品欧美aⅴ在线网站| 日韩精品在线观看一区| 98精品国产高清在线xxxx天堂|