我正在使用 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 */