【发布时间】:2012-01-25 12:49:51
【问题描述】:
我正在尝试使用memset 设置大小为rownum x rownmum 的动态数组。但是,当我如下所示调用 showarr 函数时,我得到的不是全零输出(即 ASCII 48),而是随机/垃圾值。
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;
}
【问题讨论】:
-
sizeof(a) == size(int **),表示 4 或 8 个字节,具体取决于您的处理器。 -
抱歉,有一个错字。我的意思是
sizeof(a[i]) -
你想做什么?一般来说,智能指针优于原始指针,向量优于数组,指针引用优于指针指针,std::fill() 优于 memset()。跨度>
-
像您尝试使用
sizeof一样仅适用于显式数组(即声明为int a[10]的变量)。
标签: c++ multidimensional-array memset