2013-03-27 5 views
-1

배열의 두 개 배열에 대한 포인터가 있으므로 배열의 다음 위치로 이동하려면 포인터 산술 연산을 수행해야합니다. 이 작업을 수행.포인터 배열은 double 배열을 사용하는 동안

이 내 현재 라인이 온도 배열 당신은 어떤 포인터 연산을 작성할 필요가 없습니다이 double *temperaturesArray = new double[daysToPrompt];

cout << setw(10)<< counter + 1 << setw(10) << temperaturesArray + counter << "\370C" <<setw(10) << getFahrenheit(temperaturesArray + counter) <<"\370F"<< endl; 

답변

1

올바른 배열 요소는 코드에있는대로 temperaturesArray + counter입니다. 불행히도, 그것은 단지 포인터 일뿐입니다. 이 비록 직관적

cout << setw(10) << counter + 1 << setw(10) << *(temperaturesArray + counter) << "\370C" << setw(10) << getFahrenheit(*(temperaturesArray + counter)) << "\370F" << endl; 

입니다 : 당신이 이중 값을 원할 때마다 오히려 포인터보다 당신은 역 참조 에 인쇄 나에 대한 포인터를 할 것입니다. 이 과제가 끝나면 배열에 인덱스를 붙여야합니다 ;-).

cout << setw(10) << counter + 1 << setw(10) << temperaturesArray[counter] << "\370C" << setw(10) << getFahrenheit(temperaturesArray[counter]) << "\370F" << endl; 

는 괜찮은 C++ 책에
를 역 참조 포인터를 검색합니다. 거기에 있어야합니다.

2

처럼 보이는 포인터 배열 떨어져 있음을 알아 두셔야합니다. [] 연산자로 배열에 색인을 지정하기 만하면됩니다.

cout << setw(10)<< counter + 1 
    << setw(10) << temperaturesArray[ counter ] << "\370C" 
    <<setw(10) << getFahrenheit(temperaturesArray[ counter ]) <<"\370F" 
    << endl; 

이것은 어떤 점에서 어떤 점을 포함하여 루프 안으로 들어가게됩니다. ++ counter.

이렇게 배열 (및 std::vector과 같은 유사한 구조)이 가장 일반적으로 사용되는 방법입니다.

편집 : 어떤 시점에서 선생님이 사용하는 임의의 요구 사항을 준 경우 "포인터 연산을,"당신은 두 가지 옵션이 있습니다 temperaturesArray[ counter ] 직접 그래서 당신은 이미 포인터를 사용하는 *(temperaturesArray + counter)로 변환

  • 하는 것으로를 산술, 그냥 명시 적으로. 이것을 교사에게 보여주기 위해 counter[ temperaturesArray ] 할 수도 있습니다.

  • 쓰기 대신 ++ counter++ temperaturesArraytemperaturesArray[0]를 사용하거나 대신 temperaturesArray[counter]*temperaturesArray. 하지만 이것은 잘못된 프로그래밍 습관입니다. 게으른 선생님에게 무엇을해야 할지를 말하지 않은 것에 대해 부끄러움을 느낍니다. 왜 그럴 때, 그렇게하는 것은 나쁜 생각이기도합니다.

+0

Im은 슬프게도 포인터 연산을 사용해야합니다. 나는 그것을 어떻게 해야할지 잘 모릅니다. –

+0

캔트는 그것에 대해 괜찮은 문서를 찾거나, 그렇게 힘들지 않을 것 같습니다. –

0

임 포인터이어서 산술 안타깝게도

같은

temperaturesArray[ counter ] 

는 어레이로

*(temperaturesArray + counter) 

로 치환 될 수있는 임의의 표현을 사용하는 것이 요구되고, 이들은 기능적으로 동일 .