久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

memset函數(shù)的用法

 豆芽愛(ài)尚閱 2014-03-12

 

#include <mem.h> 

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

{

    unsigned char* p = (unsigned char*) s;

    while (n > 0) {

    *p++ = (unsigned char) c;

    --n;

    }

    return s;

memset()的函數(shù),, 它可以一字節(jié)一字節(jié)地把整個(gè)數(shù)組設(shè)置為一個(gè)指定的值,。

memset()函數(shù)在mem.h頭文件中聲明,它把數(shù)組的起始地址作為其第一個(gè)參數(shù),,第二個(gè)參數(shù)是設(shè)置數(shù)組每個(gè)字節(jié)的值,第三個(gè)參數(shù)是數(shù)組的長(zhǎng)度(字節(jié)數(shù),,不是元素個(gè)數(shù)),。


其函數(shù)原型為:

    void *memset(void*,int,,unsigned),;

  其中void*表示地址,。

  例如,,下面的代碼用數(shù)組做參數(shù)傳遞給標(biāo)準(zhǔn)函數(shù)memset(),,以讓其將數(shù)組設(shè)置成全0:

    #include<mem.h>

    void main()

    {

     int ia1[50],;

     int ia2[500],;

     memset(iai,0,50*sizeof(int)),;

     memset(ia2,0,500*sizeof(int)),;

     //

    }

  memset()的第一個(gè)實(shí)參是數(shù)組名,,數(shù)組名作參數(shù)即數(shù)組作參數(shù),,它僅僅只是一個(gè)數(shù)組的起始地址而已,。

  在函數(shù)memset()棧區(qū),從返回地址往上依次為第1,,2,3個(gè)參數(shù),。第1個(gè)參數(shù)中的內(nèi)容是main()函數(shù)中定義的數(shù)組ia1的起始地址。第2個(gè)參數(shù)是給數(shù)組設(shè)置的值(0),,第3個(gè)參數(shù)是數(shù)組的長(zhǎng)度(50*2),。函數(shù)返回時(shí),,main()函數(shù)的數(shù)組中內(nèi)容全置為0。

0 && image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}">


 

1,。void *memset(void *s,int c,size_t n)
總的作用:將已開(kāi)辟內(nèi)存空間 s 的首 n 個(gè)字節(jié)的值設(shè)為值 c,。

2。例子
#include

void main(){
char *s="Golden Global View";

clrscr();

memset(s,'G',6);
printf("%s",s);

getchar();
return 0;
} 
3,。memset() 函數(shù)常用于內(nèi)存空間初始化。如:
char str[100];
memset(str,0,100);

4,。memset()的深刻內(nèi)涵:用來(lái)對(duì)一段內(nèi)存空間全部設(shè)置為某個(gè)字符,,一般用在對(duì)定義的字符串進(jìn)行初始化為‘ ’或‘\0’,;例:char a[100];memset(a, '\0', sizeof(a));

memcpy用來(lái)做內(nèi)存拷貝,,你可以拿它拷貝任何數(shù)據(jù)類(lèi)型的對(duì)象,可以指定拷貝的數(shù)據(jù)長(zhǎng)度;例:char a[100],b[50]; memcpy(b, a, sizeof(b));注意如用sizeof(a),,會(huì)造成b的內(nèi)存地址溢出,。

strcpy就只能拷貝字符串了,,它遇到'\0'就結(jié)束拷貝,;例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字符串長(zhǎng)度(第一個(gè)‘\0’之前)是否超過(guò)50位,,如超過(guò),則會(huì)造成b的內(nèi)存地址溢出,。

5.補(bǔ)充:一點(diǎn)心得
memset可以方便的清空一個(gè)結(jié)構(gòu)類(lèi)型的變量或數(shù)組,。

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

對(duì)于變量
struct sample_strcut stTest;

一般情況下,,清空stTest的方法:
stTest.csName[0]='\0';
stTest.iSeq=0;
stTest.iType=0;

用memset就非常方便:
memset(&stTest,0,sizeof(struct sample_struct));

如果是數(shù)組:
struct sample_struct TEST[10];

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

6,。strcpy
原型:extern char *strcpy(char *dest,char *src);
用法:#i nclude
功能:把src所指由NULL結(jié)束的字符串復(fù)制到dest所指的數(shù)組中,。
說(shuō)明:src和dest所指內(nèi)存區(qū)域不可以重疊且dest必須有足夠的空間來(lái)容納src的字符串,。
返回指向dest的指針,。
memcpy
原型:extern void *memcpy(void *dest, void *src, unsigned int count);
用法:#i nclude
功能:由src所指內(nèi)存區(qū)域復(fù)制count個(gè)字節(jié)到dest所指內(nèi)存區(qū)域,。
說(shuō)明:src和dest所指內(nèi)存區(qū)域不能重疊,函數(shù)返回指向dest的指針,。
memset
原型:extern void *memset(void *buffer, int c, int count);
用法:#i nclude
功能:把buffer所指內(nèi)存區(qū)域的前count個(gè)字節(jié)設(shè)置成字符c。
說(shuō)明:返回指向buffer的指針,。 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多