double **和& arr之间的区别,其中arr是double []

时间:2013-06-04 19:52:21

标签: c++ c arrays pointers

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

0 个答案:

没有答案