memset,memcpy,strcpy 的用法

(1) Memset 
原型:extern void *memset(void *buffer, int c, int count);
         用法:#include <string.h>
         功能:把buffer所指内存区域的前count个字节设置成字符c。
         说明:返回指向buffer的指针。用来对一段内存空间全部设置为某个字符
:char a[10];memset(a, '/0', sizeof(a));
              memset 可以方便的清空一个结构类型的变量或数组。
       如:
struct  _test
{
    char s[10]; 
    int x;
    int y;
};
        变量
        struct _test  st;
            (1)一般清空 st 的方法如下:
               st.s[0] = '/0';
               st.x     = 0;
               st.y     = 0;
            (2) 用 memset 方法如下:
              memset(&st,0,sizeof(struct _test));
 
          数组
           struct _test   st[10];
           则用      memset(st,0,sizeof(struct _test)*10);
(2)memcpy 
原型:extern void *memcpy(void *dest, void *src, unsigned int count);
            用法:#include <string.h>
            功能:由src所指内存区域复制count个字节到dest所指内存区域。
           说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。
           可以拿它拷贝任何数据类型的对象。

   例: char a[10],b[5];
            memcpy(b, a, sizeof(b));
           /* 注意如果用 sizeof(a) 会造成 b 的内存地址溢出*/
(3) Strcpy  
原型:extern char *strcpy(char *dest,char *src);
                  用法:#include <string.h>
                  功能:把src所指由NULL结束的字符串复制到dest所指的数组中。
                  说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳
           src的字符串。   返回指向dest的指针。

                  例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字符串长度(第一个‘/0’之前)是否超过50位,如超过,则会造成b的内存地址溢出。
(4) 三者区别  
                memset   主要应用是初始化某个内存空间。
                memcpy  
是用于 copy 源空间的数据到目的空间中。
                strcpy      
用于字符串 copy, 遇到 ‘/0’ ,将结束。
                如果理解了这些,就能知道它们的区别:
               例如初始化某块空间的时候,用到 memcpy ,那么就显得很笨拙了。
                    int  m[100]
                    memset((void*)m,0x00,sizeof(int)*100);           //Ok

                    memcpy((void*)m,"/0/0/0/0....",sizeof(int)*100);  //Not Ok!
<script type=text/javascript> // </script> 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值