动态数组用memset进行清零

一开始犯的错误: 

#include 
#include 
#include 

using namespace std;

int main()
{
    int n;
    cin>>n;

    //动态申请一个a数组
    int *a=(int*)malloc(sizeof(int)*n);
    cout<<"动态申请一个a数组:"<>a[i];
    }
    cout<<"输入数组a的值,测试数据1 2 3 4:"<

动态数组用memset进行清零_第1张图片

错误语句 

memset(a,0,sizeof(a));

a只是int类型的指针,占据4个字节

#include 

using namespace std;

int main()
{
    cout <<"int的字节大小:"<

动态数组用memset进行清零_第2张图片 

不同编译器和操作系统指针类型和int类型不一定一样大 

错误语句 

memset(a,0,sizeof(a));

更正为:

memset(a,0,sizeof(int)*n);

 更改过后的代码和运行结果:

#include 
#include 
#include 

using namespace std;

int main()
{
    int n;
    cin>>n;

    //动态申请一个a数组
    int *a=(int*)malloc(sizeof(int)*n);
    //a只是一个指针,大小只有4个字节
    cout<<"动态申请一个a数组:"<>a[i];
    }
    cout<<"输入数组a的值,测试数据1 2 3 4:"<

 动态数组用memset进行清零_第3张图片

你可能感兴趣的:(学习笔记,c++,学习)