C++의 for 및 while 루프에서 포인터를 올바르게 사용하는 방법이 궁금합니다. 일반적으로 C++ 대신 C를 사용하여 씁니다. 이번에는 C++ 표준 라이브러리를 사용하는 유일한 이유는 코드에서 다른 수학 함수에 필요한 복소수 함수를 사용할 수 있기 때문입니다.조건부 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'의 마지막 값을 가리키는 포인터 'coeffs_end'하지 않습니다. 이런 식으로 조건부에서 포인터를 사용할 수 있습니까? (전통적으로 I는 함수에 배열의 길이를 공급했을 것이다, 그러나 우리는 선언을 수정 기운) 나는 그것을 내가 컴파일 할 때 (내가하지 않는) 오류가 계속 이런 식으로 할 경우
을 :
C2064 :
p += coeffs(i)*pow(x,((coeffs_end-1)-i));
정확히'COEFFS (I)에 대한 의도가 무엇'할까? 'coeffs'는 함수가 아닙니다. – jwodder
오류가'fees'이고'coeffs'가 아닌 것은 확실합니까? 또한'coeffs (i) '보다는'coeffs [i]'가되어야 하는가? – quasiverse
그래, coeffs [i]를 의미합니다. 미안 너무 많이 사용하고 있습니다 ... – user986875