在C++中使用memset和多维数组

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)

Fre*_*Foo 5

sizeof(a[i]) == sizeof(int *); 该sizeof操作者不能被用来获得一个动态分配的阵列的长度.做

memset(a[i], '0', sizeof(a[i][0]) * rownum);
Run Code Online (Sandbox Code Playgroud)

代替.

(请不要在代码中使用ASCII值作为幻数.)