我正在使用malloc和三级指针编写一个3D数组。在下面的代码中,我用
*ptrdate
替换了 *ptrdate in (a)
, *ptrdate[i]
, 和 *ptrdate[i]
,因为它们本质上都是指向Date类型的指针,只是访问不同维度而已。两种方法得到的结果相同。
问题:当作为sizeof的运算对象时,有什么区别吗?
typedef struct {
int day;
} Date;
int main(){
int i, j, k, count=0;
int row=3, col=4, dep=5;
Date ***ptrdate = malloc(row * sizeof *ptrdate); //(a)
for (i=0; i<row; i++) {
ptrdate[i] = malloc(col * sizeof *ptrdate[i]); //(b)
for (j=0; j<col; j++) {
ptrdate[i][j] = malloc(dep * sizeof *ptrdate[i][j]); //(c)
}
}
sizeof
操作数使用时,你是指它们之间的区别吗? - Kerrek SBptrdate
、*ptrdate
和*ptrdate[i]
的类型。 - juanchopanzasizeof *ptrdate
时,最后一个malloc
是错误的,对吗?第二个malloc
也是一样的,对吗? - Spikatrixsizeof *ptrdate
、sizeof *ptrdate[i]
和sizeof *ptrdate[i][j]
。 - Spikatrix