使用指针引用传递特定的数组元素

时间:2010-12-27 04:02:07

标签: c++ pointers multidimensional-array pass-by-reference

我遇到通过引用传递指针的问题。

这是方法

void set_range(double **measu)  
{   
if ((*measu)[0] < 0) //or i is used for a loop  
   return ;         
}


int main()
{
   double *mes;
   set_range(&mes[1]);

}

我已分配内存并设置了所需的值。但是这个程序给了我“未处理的异常访问冲突读取位置”错误。 所以我的问题是,如何传递mes [1]的指针而不是mes [0](通常在给出(&amp; mes)时传递给set_range方法?

2 个答案:

答案 0 :(得分:3)

一个问题是,&mes[1]的类型为double *,而不是您的函数所需的double **

另一个问题是mes没有指向任何东西 - 它是未初始化的。所以解除引用它将访问垃圾(这就是你获得访问冲突的原因)。

我正在尝试提供一些代码来帮助澄清,但老实说,我不知道你想要做什么。一些更多的代码可以帮助我们弄清楚你的目标是什么,但只要给出上述内容,我就不知道为什么你需要一个double **或者你需要动态内存还是只需一个double变量。

答案 1 :(得分:1)

将您的功能更改为double*而不是double**,例如:

void set_range(double *measu)
{
  if (*measu < 0) //or i is used for a loop
    return;
}

int main()
{
  double *mes;
  ...
  set_range(&mes[1]);
}

或者,改为使用真实参考:

void set_range(double &measu)
{
  if (measu < 0) //or i is used for a loop
    return;
}

int main()
{
  double *mes;
  ...
  set_range(mes[1]);
}