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  

     

     

     

    未来为我而来,在自己的手中
  • 相关阅读:
    洛谷1462 通往奥格瑞玛的道路 二分+spfa
    NumPy 排序、条件刷选函数
    NumPy 统计函数
    2019-3-10——生成对抗网络GAN---生成mnist手写数字图像
    python if __name__ == 'main' 的作用和原理()
    Python os.getcwd()
    numpy.random.uniform()
    tf.trainable_variables()
    tf.layers.dense()
    彻底弄懂tf.Variable、tf.get_variable、tf.variable_scope以及tf.name_scope异同
  • 原文地址:https://www.cnblogs.com/anthow/p/3392233.html
Copyright © 2011-2022 走看看