用memset对非字符型数组初始化可能会出现错误

来源:互联网 发布:腾讯视频网络电视版 编辑:程序博客网 时间:2024/05/29 02:45

功能:memset是对一个一个的字节进行初始化。

有可能出错的地方: 如果对int数组进行初始化为非0的整数,会出现错误,如:

memset(arr, 1, sizeof(int)*length)
每个数都被初始化为00000001 00000001 00000001 00000001。而不是1

#include<iostream>#include<algorithm>#include<iterator>#include<memory.h>using namespace std;void updateArray(int arr[], const int& length){    int index = 2;    int value = 3;    arr[index] = value;//    *(arr+index) = value;//    *(arr+index)++;}int main(){    const int length = 6;    int arr[length];    memset(arr, 0, sizeof(int)*length);    updateArray(arr, length);    copy(arr, arr+length, ostream_iterator<int>(cout, " "));    cout<<endl;    return 0;}


0 0
原创粉丝点击