为什么memcpy在这里没有按预期工作?

时间:2017-04-24 09:58:46

标签: c++

void test_memcpy(int *arr, int hi)
{

    int arr1[hi];

    memcpy(arr1, arr, sizeof(int)*hi);


    for(int i=0;i<=hi;i++)
    cout<<arr1[i]<<"\t";

}

int arr[] = {2,5,4,1,2,1,3,4,5,6,7,8};
test_memcpy(arr,11); // call test_memcpy function

输出:

  

2 5 4 1 2 1 3 4 5 6 7 6946568

//而不是在最后一个位置打印8,有一些垃圾值    印刷的 //请帮助理解

1 个答案:

答案 0 :(得分:1)

我看到错误:

test_memset(arr); 那应该是 test_memset(arr,12);

和: for(int i=0;i<=hi;i++) 应该 for(int i=0;i<hi;i++)

从我猜测你在第一个中有11个而在第二个中有错误,因此只复制了11个,但是写出了12个因此得到随机的第12个元素。

对于你的下一个问题,将代码(免费的两行)包含在main函数中并添加库导入以便可编译也是很好的。