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

首頁 > 編程 > C++ > 正文

C++中memset函數用法詳解

2020-05-23 14:02:35
字體:
來源:轉載
供稿:網友

本文實例講述了C++中memset函數用法。分享給大家供大家參考,具體如下:

功 能: 將s所指向的某一塊內存中的每個字節的內容全部設置為ch指定的ASCII值,塊的大小由第三個參數指定,這個函數通常為新申請的內存做初始化工作

用 法: void memset(void *s, char ch, unsigned n);

程序示例:

#include <string.h>#include <stdio.h>#include <memory.h>int main(void){char buffer[] = "Hello world/n";printf("Buffer before memset: %s/n", buffer);memset(buffer, '*', strlen(buffer) );printf("Buffer after memset: %s/n", buffer);return 0;}

輸出結果:

Buffer before memset: Hello world
Buffer after memset: ***********

編譯平臺:
Microsoft Visual C++ 6.0

也不一定就是把內容全部設置為ch指定的ASCII值,而且該處的ch可為int或者其他類型,并不一定要是char類型。例如下面這樣:

char array[5] = {1,4,3,5,2};for(int i = 0; i < 5; i++)cout<<array[i]<<" ";cout<<endl;memset(array,"0",5*sizeof(int));for(int k = 0; k < 5; k++)cout<<array[k]<<" ";cout<<endl;

輸出的結果就是:
1 4 3 5 2
0 0 0 0 0

后面的表大小的參數是以字節為單位,所以,對于int或其他的就并不是都乘默認的1(字符型)了。而且不同的機器上int的大小也可能不同,所以最好用sizeof()。

要注意的是,memset是對字節進行操作,所以上述程序如果改為

int array[5] = {1,4,3,5,2};for(int i = 0; i < 5; i++)cout<<array[i]<<" ";cout<<endl;memset(array,1,5*sizeof(int));// 注意 這里與上面的程序不同for(int k = 0; k < 5; k++)cout<<array[k]<<" ";cout<<endl;

輸出的結果就是:
1 4 3 5 2
16843009 16843009 16843009 16843009 16843009

為什么呢?

因為memset是以字節為單位就是對array指向的內存的5個字節進行賦值,每個都用ASCII為1的字符去填充,轉為二進制后,1就是00000001,占一個字節。一個INT元素是4字節,合一起就是00000001000000010000000100000001,就等于16843009,就完成了對一個INT元素的賦值了。

所以用memset對非字符型數組賦初值是不可取的!(????我好像看到有可以啊,又帶確認)

例如有一個結構體Some x,可以這樣清零:

memset( &x, 0, sizeof(Some) );

如果是一個結構體的數組Some x[10],可以這樣:

menset( x, 0, sizeof(Some)*10 );

memset函數詳細說明

1. void *memset(void *s,int c,size_t n)

總的作用:將已開辟內存空間 s 的首 n 個字節的值設為值 c。

2. 例子

main(){char *s="Golden Global View";clrscr();memset(s,'G',6);//貌似這里有點問題//printf("%s",s);getchar();return 0;}

【這個問題相當大,程序根本就運行不下去了,你這里的S志向的是一段只讀的內存,而你memset又試圖修改它,所以運行時要出錯,修改辦法char *s修改為char s[]】

3. memset() 函數常用于內存空間初始化。如:

char str[100];memset(str,0,100);

4. memset()的深刻內涵:用來對一段內存空間全部設置為某個字符,一般用在對定義的字符串進行初始化為‘memset(a, '/0', sizeof(a));
memcpy用來做內存拷貝,你可以拿它拷貝任何數據類型的對象,可以指定拷貝的數據長度;例:

char a[100], b[50];memcpy(b, a, sizeof(b));//注意如用sizeof(a),會造成b的內存地址溢出。

strcpy就只能拷貝字符串了,它遇到'/0'就結束拷貝;例:

char a[100], b[50];strcpy(a,b);

如用strcpy(b,a),要注意a中的字符串長度(第一個‘/0'之前)是否超過50位,如超過,則會造成b的內存地址溢出。

5. 補充:某人的一點心得

memset可以方便的清空一個結構類型的變量或數組。

如:

struct sample_struct{char csName[16];int iSeq;int iType;};

對于變量

struct sample_strcut stTest;

一般情況下,清空stTest的方法:

stTest.csName[0]='/0';stTest.iSeq=0;stTest.iType=0;

用memset就非常方便:

memset(&stTest,0,sizeof(struct sample_struct));

如果是數組:

struct sample_struct TEST[10];

則:

memset(TEST,0,sizeof(struct sample_struct)*10);

或:

memset(TEST,0,sizeof(TEST));

希望本文所述對大家C++程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区在线免费| 久久精品久久久久电影| 国产综合福利在线| 欧美多人爱爱视频网站| 欧美资源在线观看| 亚洲国产精品久久精品怡红院| 九色成人免费视频| 欲色天天网综合久久| 成人网中文字幕| 国产在线98福利播放视频| 欧美贵妇videos办公室| 亚洲精品福利视频| 色av吧综合网| 欧美第一页在线| 91国在线精品国内播放| 亚洲性xxxx| 久久99久久99精品免观看粉嫩| 欧美一级免费看| 欧美激情成人在线视频| 欧美一级视频一区二区| **欧美日韩vr在线| 中文字幕日韩精品在线观看| 免费91麻豆精品国产自产在线观看| 欧美成人精品激情在线观看| 91欧美精品成人综合在线观看| 亚洲石原莉奈一区二区在线观看| 色综合久久天天综线观看| 欧美激情中文字幕乱码免费| 国产一区二中文字幕在线看| 91国产视频在线| 欧美精品videos性欧美| 国产日韩欧美91| 精品久久久久人成| 国产手机视频精品| 日韩精品免费在线视频观看| 欧美日韩电影在线观看| 国产欧美日韩中文字幕| 国产日韩欧美一二三区| 91免费人成网站在线观看18| 日韩精品亚洲元码| 国产精品免费一区二区三区都可以| 欧美丰满片xxx777| 亚洲网在线观看| 久久精品夜夜夜夜夜久久| 57pao国产精品一区| 国内精品国产三级国产在线专| 美女视频久久黄| 国产91精品黑色丝袜高跟鞋| 日韩欧美大尺度| 亚洲护士老师的毛茸茸最新章节| 日韩h在线观看| 这里只有精品丝袜| 国自产精品手机在线观看视频| 色先锋资源久久综合5566| 欧美男插女视频| 91麻豆桃色免费看| 久久免费视频这里只有精品| 性欧美长视频免费观看不卡| 久久精品视频网站| 日韩久久午夜影院| 欧美视频在线观看 亚洲欧| 欧美插天视频在线播放| 亚洲国产一区自拍| 国产日韩在线亚洲字幕中文| 成人激情av在线| 91精品在线播放| 亚洲白虎美女被爆操| 91久久久精品| 久久99热精品这里久久精品| 色吧影院999| 欧美日韩国产一区在线| 夜夜嗨av色综合久久久综合网| 日韩有码在线电影| 中文字幕精品—区二区| 欧美亚洲第一区| 亚洲一区亚洲二区| 国产成人精品久久久| 国产日韩亚洲欧美| 日韩精品在线第一页| 91精品国产91久久久| 亚洲精品国产电影| 国产美女高潮久久白浆| 欧美成人精品一区二区三区| 成人综合网网址| 亚洲一区二区免费| 欧美第一淫aaasss性| 青草青草久热精品视频在线网站| 7m第一福利500精品视频| 夜夜嗨av一区二区三区免费区| 91精品国产高清自在线看超| 久久精品国产一区二区三区| 欧美久久精品午夜青青大伊人| 亚洲电影免费在线观看| 国产精品久久久久久久久粉嫩av| 性色av香蕉一区二区| 日韩视频免费大全中文字幕| 一区二区三区美女xx视频| 美女扒开尿口让男人操亚洲视频网站| 亚洲精品白浆高清久久久久久| 欧美精品免费看| 日韩av中文字幕在线免费观看| 亚洲天堂免费观看| 亚洲男人的天堂在线播放| 亚洲aⅴ日韩av电影在线观看| 亚洲人高潮女人毛茸茸| 国产精品jvid在线观看蜜臀| 亚洲一区二区久久久| 欧美成在线视频| 久久久国产精品免费| 三级精品视频久久久久| 日韩中文字幕国产精品| 岛国精品视频在线播放| 欧美一级视频免费在线观看| 日韩电影中文字幕在线| 深夜福利亚洲导航| 中文字幕国内精品| 成人www视频在线观看| 色无极亚洲影院| 91精品国产色综合| 日韩av成人在线观看| 亚洲韩国日本中文字幕| 丝袜美腿亚洲一区二区| 国产精品99久久99久久久二8| 丝袜美腿亚洲一区二区| 日本成人激情视频| 国产精国产精品| 久久久999精品免费| 精品动漫一区二区三区| 亚洲97在线观看| 欧美激情视频在线免费观看 欧美视频免费一| 国产精品美女av| 亚洲欧洲国产一区| 成人网在线视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产精品18久久久久久首页狼| 成人黄色激情网| 国产精品免费一区| 尤物九九久久国产精品的分类| 久久精品亚洲国产| 国产在线精品一区免费香蕉| 久久精品一区中文字幕| 国产精品都在这里| 亚洲成色www8888| 久久久免费观看| 中文字幕日韩在线视频| 欧美日韩亚洲网| 中文字幕欧美精品日韩中文字幕| 国内偷自视频区视频综合| 亚洲欧美日韩在线高清直播| 欧美日韩xxx| 久久免费国产精品1| 91久久精品美女| 在线观看国产精品淫| 日本亚洲欧洲色α| 国产精品久久久久久久一区探花| 日韩福利视频在线观看| 一区二区欧美激情| 国产亚洲一区精品| 亚洲精品久久久久久久久久久久| 美女999久久久精品视频| 久久精品国产91精品亚洲| 久久精品一区中文字幕| 久久免费精品视频| 亚洲欧美中文日韩在线|