Must know something of everything and everything of something!

[转]memset函数详细说明

上一篇 / 下一篇  2007-08-31 19:23:53 / 个人分类:Other

memset函数详细说明

W q#{e/M051Testing软件测试网 F;qN'eW"u

void *memset(void *s,int c,size_t n)
vJE+{(x,z0总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。51Testing软件测试网J^%k'f]\ f#K

)P{e6L.LDzb02。例子51Testing软件测试网} egI[7e
#i nclude51Testing软件测试网f S"{0x.rwJ[3Q
#i nclude51Testing软件测试网m e?}0Ap2{"AS

4Ew f.}#N0main(){
[Yy1]'E/JX { U.C)]0char *s="Golden Global View";

oS7BPQfZ]y W)p0

K7b:pU.c8R0clrscr();51Testing软件测试网8Y },rk\3_}

51Testing软件测试网9L4t@ pGK@ ?W

memset(s,'G',6);
+sb+H^-^1E,R!PM7EF2EE;K0printf("%s",s);51Testing软件测试网&oUo!lR0Q x#C

51Testing软件测试网B6vs3r Z2Rg

getchar();
3D)@%n{/czG0return 0;
-_0TqS$_0} 
G [9H7L:Q)z9P2{*EG03。memset() 函数常用于内存空间初始化。如:
[h2Z1uJ*t J0char str[100];51Testing软件测试网 @ Ic/}bf ^)X
memset(str,0,100);

ppFr#J051Testing软件测试网;k2{mNI:[1sh

4。memset()的深刻内涵:用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘\0’;例:char a[100];memset(a, '\0', sizeof(a));

o%y4u.W+M&e051Testing软件测试网*@1b mJ5Z5q(x

memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度;例:char a[100],b[50]; memcpy(b, a, sizeof(b));注意如用sizeof(a),会造成b的内存地址溢出。

$Y+]L%`_(M3I.e/Hb4H~051Testing软件测试网+r1P h iOAh

strcpy就只能拷贝字符串了,它遇到'\0'就结束拷贝;例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字符串长度(第一个‘\0’之前)是否超过50位,如超过,则会造成b的内存地址溢出。51Testing软件测试网s6Pu#KJ9KP!D

7az2BKGJ~U05.补充:某人的一点心得
\KW'e GI6E7Gr0memset可以方便的清空一个结构类型的变量或数组。51Testing软件测试网}h7d+o4\2{.hq-ns-i

t@p}\:r._0如:
S:JWj!P\zo0struct sample_struct
-q |+F!y\Y}:lK6OEC_0{
YD`hs4g BuMY0char csName[16];
m@ lr"{3qU A*t0int iSeq;51Testing软件测试网v Ncq mF;LG
int iType;
pF3S'Ge&@.fR0};51Testing软件测试网c9lDU+jV%jl&d

51Testing软件测试网.X V2T!E)?ZXM

对于变量51Testing软件测试网5?2K,Es ?8N)W
struct sample_strcut stTest;

X-` ef7sS051Testing软件测试网/]{PR!M_:A$XF

一般情况下,清空stTest的方法:51Testing软件测试网#Z Y8Hx#\-]G h
stTest.csName[0]='\0';
8^\1~]Y7[9c zw0stTest.iSeq=0;51Testing软件测试网 Ve1Z&NM
stTest.iType=0;

z"ou:[f-u0

V\-w6F;C7N4gniCa0用memset就非常方便:
7ed#g C \'z\0memset(&stTest,0,sizeof(struct sample_struct));

b/Xk KZ:F-b(Dy-Q0G0

5u)n;k RQS0如果是数组:51Testing软件测试网Y q%YH B
struct sample_struct TEST[10];
JX([:K%i0
.Z$c P5h-g|U+u#Y8PU/}0memset(TEST,0,sizeof(struct sample_struct)*10);

pjL:lJ sA+q~051Testing软件测试网._)N hs+M$aQ[

6。strcpy51Testing软件测试网E%iq:pp.lF9d
原型:extern char *strcpy(char *dest,char *src);51Testing软件测试网6vY6Pt f!y
用法:#i nclude51Testing软件测试网 n'm"K(Nh'};\[2h
功能:把src所指由NULL结束的字符串复制到dest所指的数组中。51Testing软件测试网2I,Kv%Le[Z B;q
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
] E7N%|[cR4^7oO0返回指向dest的指针。
'ZHJW*k*Ow{\x0memcpy51Testing软件测试网Y IWkr*^sc cS
原型:extern void *memcpy(void *dest, void *src, unsigned int count);
H[Y p'p}Mq0用法:#i nclude
wB.h3M K8@j0功能:由src所指内存区域复制count个字节到dest所指内存区域。51Testing软件测试网8p1Ol Y)e\4SW0O5u
说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。51Testing软件测试网|o&['ZR8E_R
memset
I;\E~A9L0原型:extern void *memset(void *buffer, int c, int count);51Testing软件测试网/b6bEa G
用法:#i nclude
L:a"M&E~0功能:把buffer所指内存区域的前count个字节设置成字符c。
~%Q2|$L'm-}0说明:返回指向buffer的指针。 51Testing软件测试网F!bUq7C[ N(j1m
51Testing软件测试网fT|8O"^%RF'Q,T)b


TAG: memset Other

 

评分:0

我来说两句

日历

« 2024-04-17  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 76731
  • 日志数: 93
  • 建立时间: 2007-03-22
  • 更新时间: 2007-12-31

RSS订阅

Open Toolbar