zoukankan      html  css  js  c++  java
  • c/c++学习系列之memset()函数

    memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的。 其原型是:void* memset(void *_Dst, int  _Val, size_t _Size)

    _Dst是目标起始地址,_Val是要赋的值,_Size是要赋值的字节数。

     例1:

           char str[9];

           我们用memset给str初始化为“00000000”,用法如下

           memset(str,0,8); 

    注意,memset是逐字节 拷贝的。

     

       例2:

           int num[8];

           我们用memset给str初始化为{1,1,1,1,1,1,1,1},

           memset(num,1,8);//这样是不对的

         一个int是4个字节的,8个int是32个字节,所以首先要赋值的长度就不应该为8而是32。

         因为memset是 逐字节 拷贝,以num为首地址的8字节空间都被赋值为1,

         即一个int变为0X00000001 00000001 00000001 00000001,显然,把这个数化为十进制不会等于1的。

       

       所以,在memset使用时要千万小心,在给char以外的数组赋值时,只能初始化为0或者-1。

      (如果用memset(a,1,20);
    就是对a指向的内存的20个字节进行赋值,每个都用ASCII1的字符去填充,转为二进制后,1就是00000001,占一个字节。一个INT元素是4字节,合一起就是1000000010000000100000001,就等于16843009,就完成了对一个INT元素的赋值了。)

    #include <memory.h> //我试了一下,C语言这么用,C++还可以用<cstring>  
    #include <stdio.h> 
     void main( void )  
    {  
     char buffer[] = "This is a test of the memset function";  
     printf( "Before: %s
    ", buffer ); 
     memset( buffer, '*', 4 ); 
     printf( "After: %s
    ", buffer ); 
     }  
    输出:  
    Before: This is a test of the memset function  
    After: **** is a test of the memset function  

     

     

     

    未来为我而来,在自己的手中
  • 相关阅读:
    第四节 哈希类型
    第三节 string类型
    第二节 redis的数据类型和一些通用的键命令
    第一节 Redis的安装配置
    第三十二节 定时器
    第三十一节 sed命令
    第三十节 awk命令
    第二十九节 cut命令
    第二十八节 函数和脚本调试
    Gartner 如何看 RASP 和 WAF?
  • 原文地址:https://www.cnblogs.com/anthow/p/3392233.html
Copyright © 2011-2022 走看看