關於這段代碼我有兩個問題。關於函數中指針的C問題
double*** pdata
和int*** pmask
是什麼意思?指向指針的指針? 爲什麼或什麼時候這是必要的?int
和double
是不同的類型,但是double*
和int*
也不同。我們能否在沒有演員的情況下對他們進行操作
這裏是我疑惑代碼:
static int makedatamask(int nrows, int ncols, double*** pdata, int*** pmask)
{ int i;
double** data;
int** mask;
data = malloc(nrows*sizeof(double*));
if(!data) return 0;
mask = malloc(nrows*sizeof(int*));
if(!mask)
{ free(data);
return 0;
}
for (i = 0; i < nrows; i++)
{ data[i] = malloc(ncols*sizeof(double));
if(!data[i]) break;
mask[i] = malloc(ncols*sizeof(int));
if(!mask[i])
{ free(data[i]);
break;
}
}
if (i==nrows) /* break not encountered */
{ *pdata = data;
*pmask = mask;
return 1;
}
*pdata = NULL;
*pmask = NULL;
nrows = i;
for (i = 0; i < nrows; i++)
{ free(data[i]);
free(mask[i]);
}
free(data);
free(mask);
return 0;
}
因此,當你指向一個**指針**指向一個double,那是什麼**指針**類型? – Programmer
@編程愛好者:它是一個指向雙精度指針的指針(可以說這是一個雙精度指針,可能會出現一些混淆)。 –