1

我正在使用 C。我有一个这样的双数组:

double arr[3]={1,2,3};

接下来,我假设一个

double[]

就像

double *,

因此我创建了这个指针变量:

double ** ppdArr = &arr; /* indirection */

我计划稍后取消引用它并访问原始数组中的项目,如下所示:

double* pdArr = *ppdArr; /* dereference */
double value = pdArr[0]; /* access violation, because pdArr is NULL */

为什么?当交替使用数组和指针时,静态分配与动态分配有什么区别?或者这个错误还有其他原因吗?例如,以下工作(如预期):

double *arr2 = ... /*allocated through malloc()*/
double ** ppdArr2 = &arr2; /* indirection */
double *pdArr2 = *ppdArr2; /* dereference */
double value2 = pdArr2[0]; /* works */
4

0 回答 0