由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 再问:关于多维数组的malloc
相关主题
怎么得到char *分配空间的大小?[合集] 一个vector的问题
大家新年好。 请教一个 c interview question如何在数组中存无限量的元素?比较复杂
请教 C/C++ 指向多维数组的指针的问题数组问题
数组分配问题,求教帮忙回答一个老师的问题
关于malloc/free和循环为什么要这样计算数中元素的个数?
C里面一个被分配了内存的指针如何知道分配了多少?如何让一个指针指向一个多维数组
在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的(转载)请教一个2维动态矩阵的问题
数组定义的时候,分配空间了么?请教一个pointer的问题
相关话题的讨论汇总
话题: double话题: zzz话题: irow话题: malloc话题: sizeof
进入Programming版参与讨论
1 (共1页)
i****d
发帖数: 255
1
// 定义二维数组的指针
double **zzz;
int i, j, irow = 100, icol = 4;
// 有两种方式malloc
// 第一种
zzz = (double**) malloc( sizeof(double) * irow * icol) );
for(i=0; i zzz[i] = (double *) malloc( sizeof(double) * icol) );
// 第二种
zzz = (double**) malloc( sizeof(double*) * irow) );
for(i=0; i zzz[i] = (double *) malloc( sizeof(double) * icol) );
*******************************************
感觉第二种方式好理解:先定义一个指针数组zzz[irow];然后让里面的各个指针指向
一个个一维数组,即zzz[0]存储第0列的首地址,等等。
但第一种方式不好理解:感觉开辟了两份内存。
请指教!
r*********r
发帖数: 3195
2
第一种是错的
d****i
发帖数: 4809
3
Exactly! The first method is wrong. You define a pointer array of size irow
* icol, which is not the case because you should only create a pointer array
of size irow, each of which is a pointer that points to the first element
of each column.
l*******G
发帖数: 1191
4
can we use the second method to define multiple-dimension arrays (>2)?
i.e. something like
int idim1=100;
int idim2=200;
int idim3=300;
int idim4=10;
zzz = (double**) malloc( sizeof(double*) * idim1) );
for(i=0; i zzz[i] = (double **) malloc( sizeof(double) * idim2) );
for(j=0; j zzz[i][j]=(double **) malloc( sizeof(double) * idim3) );
for(k=0; k zzz[i][j][k]=(double **) malloc( sizeof(double) * idim4) );
}
}
}
a****l
发帖数: 8211
5
there is nothing like "can" or "can not". The only question is: is this
method suitable for your application?

【在 l*******G 的大作中提到】
: can we use the second method to define multiple-dimension arrays (>2)?
: i.e. something like
: int idim1=100;
: int idim2=200;
: int idim3=300;
: int idim4=10;
: zzz = (double**) malloc( sizeof(double*) * idim1) );
: for(i=0; i: zzz[i] = (double **) malloc( sizeof(double) * idim2) );
: for(j=0; j
1 (共1页)
进入Programming版参与讨论
相关主题
请教一个pointer的问题关于malloc/free和循环
size不固定的struct怎么定义呀?C里面一个被分配了内存的指针如何知道分配了多少?
ask a c question在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的(转载)
初学C,对什么该free一直搞不明白数组定义的时候,分配空间了么?
怎么得到char *分配空间的大小?[合集] 一个vector的问题
大家新年好。 请教一个 c interview question如何在数组中存无限量的元素?比较复杂
请教 C/C++ 指向多维数组的指针的问题数组问题
数组分配问题,求教帮忙回答一个老师的问题
相关话题的讨论汇总
话题: double话题: zzz话题: irow话题: malloc话题: sizeof