2010-12-27 9 views
0

ポインタを参照渡しに問題があります。ポインタ参照を使用して特定の配列要素を渡す

これは私がメモリを割り当てられており、必要な値が設定されている方法

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]); 

} 

あります。しかし、このプログラムは私に "Unhandled exception Access violation reading location"というエラーを出します。 私の質問は、mes [0](通常は(& mes)が与えられたときに渡される)mes_ [1]のポインタをset_rangeメソッドに渡す方法ですか?

+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]); 
} 
+3

この質問は、C++には参照がありません。 –

+0

私はそれをC++に変更しました。 Remyは私に何を期待しているのですか(mes [0]の代わりにmes [1]のポインタを渡す方法) – kaja

3

一つの問題は、&mes[1]はタイプdouble *であるということですあなたの機能にはdouble **が必要ではありません。

もう1つの問題は、mesが何かを指していないことです。これは初期化されていません。逆参照するとジャンクにアクセスします(アクセス違反が発生します)。

私は明確にするためにいくつかのコードを考え出していますが、正に、あなたが何をしようとしているのか分かりません。あなたの目標が何であるか把握するのに役立つコードがいくつかありますが、上記のように私はなぜdouble **が必要か、または動的メモリが必要かどうか、またはdoubleという変数が1つだけ必要かどうかわかりません。

関連する問題