zoukankan      html  css  js  c++  java
  • memset

    转:https://blog.csdn.net/qq_27522735/article/details/53374765
    1.
    对于大块儿内存的分配,例如int arr[100];定义了数组arr,包含100个元素,如果你写成int arr[100]=0;想将数组全部内容初始化为0,是不行的,连编译都不能通过。
    这种情况的初始化,有两种方法,一种是一个一个的初始化,如

       arr[i]=0;
    

    就完成了数组的初始化。
    另一种方法,就是使用memset:一个语句就够了memset(arr,0,sizeof(int)*100);

    2.strcpy
    原型:extern char *strcpy(char *dest,char *src);
    功能:把src所指由NULL结束的字符串复制到dest所指的数组中。
    说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
    返回指向dest的指针。

    Strcpy 就只能拷贝字符串了,它遇到'/0'就结束拷贝。

    3.memcpy
    原型:extern void *memcpy(void *dest, void *src, unsigned int count);
    功能:由src所指内存区域复制count个字节到dest所指内存区域。
    说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。

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

    4.memset
    原型:extern void *memset(void *buffer, int c, int count);
    功能:把buffer所指内存区域的前count个字节设置成字符c。
    说明:返回指向buffer的指针。

    5.以下demo是可以的,能把数组中的元素值都设置成字符1,

    #include <iostream>
    #include <cstring>
    using namespace std;
    int main()
    {
         char a[5];
         memset(a,'1',5);
         for(int i = 0;i < 5;i++)
           cout<<a[i]<<"   ";
         system("pause");
         return 0;
    }
    

    image

    但是下面这个却不行:

       int a[5];
         memset(a,1,5);//这里改成memset(a,1,5 *sizeof(int))也是不可以的
         for(int i = 0;i < 5;i++)
           cout<<a[i]<<"   ";
         system("pause");
         return 0;
    

    image

    因为第一个程序的数组a是字符型的,字符型的占内存大小是1Byte,而memset函数也是以字节为单位进行赋值的,所以你输出
    没有问题。而第二个程序a是整型的,使用memset还是按字节赋值,这样赋值完以后,每个数组元素的值实际上是0x01010101即十进制的16843009。

  • 相关阅读:
    201521044091《Java程序设计》第7周学习总结
    201521044091《java程序设计》第四次总结
    201521044091 《java程序设计》第八周学习总结
    201521044091 《Java程序设计》第5周学习总结
    201521044091 《Java程序设计》第2周学习总结
    201521044091 《Java程序设计》第3周学习总结
    MySQL设置字符集CHARACTER SET
    Create My MySQL configuration by Percona
    How to use jQuery to manipulate Cookies
    How to use OpenXml to import xml data to Sql server
  • 原文地址:https://www.cnblogs.com/sggggr/p/15527890.html
Copyright © 2011-2022 走看看