uye*_*tch 0 c++ memset multidimensional-array
我试图用来memset设置一个动态的大小数组rownum x rownmum.但是,当我调用showarr如下所示的函数时48,我得到的是随机/垃圾值,而不是获得全零的输出(即ASCII ).
void showarr(int **a, int rownum)
{
for ( int i = 0; i < rownum; i++) {
for ( int j = 0; j < rownum; j++) {
cout<<a[i][j]<<endl;
}
}
}
int main(int argc, char *argv[])
{
int n;
cin>>n;
int rownum;
cin>>rownum;
int **a = new int* [rownum] ;
for ( int i = 0; i <rownum; i++) {
a[i] = new int[rownum];
}
for (int i = 0; i < rownum; i++) {
memset(a[i],48,sizeof(a[i]));
}
showarr(a,rownum);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
sizeof(a[i]) == sizeof(int *); 该sizeof操作者不能被用来获得一个动态分配的阵列的长度.做
memset(a[i], '0', sizeof(a[i][0]) * rownum);
Run Code Online (Sandbox Code Playgroud)
代替.
(请不要在代码中使用ASCII值作为幻数.)