关于memset的错误使用

我们在使用memset进行初始化的时候,经常会使用这种方式,memset(a,0,sizeof(a)),这让我们误以为将其初始化其他值也可以,实际是错误的。

void print_arr(unsigned short* ptr)
{
    for(int i = 0;i< 5;++i)
    {
        cout<<*(ptr+i)<<endl;
    }
}

void main()
{
    unsigned short a[5]={0};
    memset(a,1,sizeof(a));
    print_arr(a);
    cin.get();
}

这是因为memset是针对字节的,short为两个字节,所有每个数组内元素的实际值是0x0101,也就是257,所以对于多字节数组或结构体等元素的初始化,memset是不适用的,而对于unsigned char,则是适用的

走过的坑,记录一下

posted @ 2018-11-23 13:50  落叶满空山  阅读(954)  评论(0编辑  收藏  举报