我遇到通过引用传递指针的问题。
这是方法
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方法?
答案 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]);
}