慣れていない方法でポインター演算を使用するコードを理解しようとしています。コードのある時点で、これに遭遇しました:
complex<double> **P, *p_row, result=complex<double>(0,0);
P=new complex<double>*[n];
for(i=0;i<n;i++) P[i]=new complex<double>[n];
for(i=0,p_row=*P;i<n;i++,p_row+=n) result+=log(*(p_row+i));
P が行列の場合、これは P の対角要素の対数を加算するように見えますが、上記の最後の行は次と同等ではないことがわかります
for(i=0;i<n;i++) result+=log(P[i][i]);
ここで何が起こっているのかの説明を探していますが、見つかりません。また、問題のコードは最終的に正しい結果をもたらすようです (これはモンテカルロの一部です)。何か案は?