一开始犯的错误:
#include <iostream>
#include <string.h>
#include <malloc.h>
using namespace std;
int main()
{
int n;
cin>>n;
//动态申请一个a数组
int *a=(int*)malloc(sizeof(int)*n);
cout<<"动态申请一个a数组:"<<endl;
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
//清空a数组,置为0
memset(a,0,sizeof(a));
cout<<"清空a数组,置为0:"<<endl;
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
//输入数组a的值,测试数据1 2 3 4
for(int i=0;i<n;i++)
{
cin>>a[i];
}
cout<<"输入数组a的值,测试数据1 2 3 4:"<<endl;
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
//清空a数组,置为0
memset(a,0,sizeof(a));
cout<<"清空a数组,置为0:"<<endl;
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
//静态数组
int b[4]={5,6,7,8};
cout<<"静态数组b[4]={5,6,7,8}:"<<endl;
for(int i=0;i<4;i++)
{
cout<<b[i]<<" ";
}
cout<<endl;
//清零
memset(b,0,sizeof(b));
cout<<"清零:"<<endl;
for(int i=0;i<n;i++)
{
cout<<b[i]<<" ";
}
cout<<endl;
return 0;
}
错误语句
memset(a,0,sizeof(a));
a只是int类型的指针,占据4个字节
#include <iostream>
using namespace std;
int main()
{
cout <<"int的字节大小:"<<sizeof(int)<< endl;
cout<<endl;
cout <<"long的字节大小:"<<sizeof(long)<< endl;
cout<<endl;
cout <<"long long的字节大小:"<<sizeof(long long)<< endl;
cout<<endl;
cout <<"char的字节大小:"<<sizeof(char)<< endl;
cout << endl;
cout <<"double的字节大小:"<<sizeof(double)<< endl;
cout <<endl;
cout <<"int类型指针的字节大小:"<<sizeof(int*)<< endl;
cout <<endl;
cout <<"long类型指针的字节大小:"<<sizeof(long*)<< endl;
cout <<endl;
cout <<"long long类型指针的字节大小:"<<sizeof(long long*)<< endl;
cout <<endl;
cout <<"char类型指针的字节大小:"<<sizeof(char*)<< endl;
cout <<endl;
cout <<"double类型指针的字节大小:"<<sizeof(double*)<< endl;
cout <<endl;
return 0;
}
不同编译器和操作系统指针类型和int类型不一定一样大
错误语句
memset(a,0,sizeof(a));
更正为:
memset(a,0,sizeof(int)*n);
更改过后的代码和运行结果:
#include <iostream>
#include <string.h>
#include <malloc.h>
using namespace std;
int main()
{
int n;
cin>>n;
//动态申请一个a数组
int *a=(int*)malloc(sizeof(int)*n);
//a只是一个指针,大小只有4个字节
cout<<"动态申请一个a数组:"<<endl;
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
//清空a数组,置为0
memset(a,0,sizeof(int)*n);
cout<<"清空a数组,置为0:"<<endl;
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
//输入数组a的值,测试数据1 2 3 4
for(int i=0;i<n;i++)
{
cin>>a[i];
}
cout<<"输入数组a的值,测试数据1 2 3 4:"<<endl;
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
//清空a数组,置为0
memset(a,0,sizeof(int)*n);
cout<<"清空a数组,置为0:"<<endl;
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
//静态数组
int b[4]={5,6,7,8};
cout<<"静态数组b[4]={5,6,7,8}:"<<endl;
for(int i=0;i<4;i++)
{
cout<<b[i]<<" ";
}
cout<<endl;
//清零
memset(b,0,sizeof(b));
cout<<"清零:"<<endl;
for(int i=0;i<n;i++)
{
cout<<b[i]<<" ";
}
cout<<endl;
return 0;
}