我想知道如何在C++中正確使用for和while循環中的指針。通常我使用C而不是C++編寫。我這次使用C++ std庫的唯一原因是我可以使用代碼中其他數學函數所需的複數函數。編譯時使用指針for conditional while/for循環會產生錯誤
作爲賦值的一部分,我們給了下面的函數聲明。我寫的部分是在函數中註釋的。
typedef std::complex<double> complex;
// Evaluates a polynomial using Horner's approach.
// Inputs:
// [coeffs, coeffs_end) - polynomial coefficients, ordered by descending power
// x - point of evaluation
// Outputs:
// p - value of polynomial at x
// dp - value of polynomial derivative at x
// ddp - value of polynomials second derivative at x
//
template<typename T>
inline void poly_val(T const* coeffs, T const* coeffs_end, T x, T & p, T & dp, T & ddp)
{
//MY CODE HERE
int i = 0;
const T *pnt = coeffs;
while(pnt != coeffs_end){
//Evaluate coefficients for descending powers
p += coeffs(i)*pow(x,((coeffs_end-1)-i));
pnt++;
i++;
}
}
的功能不知道數組的長度,所以我猜爲停止條件指針「coeffs_end」,它指向數組「coeffs」的最後一個值。我可以在這種條件下使用指針嗎? (傳統上,我會喂陣列到函數的長度,但我們不能修改聲明)
如果我這樣做,這樣一來我一直在編譯時得到一個錯誤(我不明白):
C2064:長期敵人不能評價服用1個參數
以下行的函數:
p += coeffs(i)*pow(x,((coeffs_end-1)-i));
你到底打算讓'coeffs(ⅰ)'做什麼? 'coeffs'不是一種功能,是嗎? – jwodder
你確定它是'敵人'而不是'coeffs'的錯誤嗎?另外,它應該是'coeffs [i]'而不是'coeffs(i)'? – quasiverse
是的,它的意思是coeffs [i]。對不起,使用matlab太多了...... – user986875