#include
<mem.h> void* memset(void* s, int c, size_t n) {
} 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;}}">
總的作用:將已開(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的指針,。 |
|
來(lái)自: 豆芽愛(ài)尚閱 > 《語(yǔ)言學(xué)習(xí)》