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