2015-02-05 2 views
-1

메모리 주소를 이중 포인터에 저장하려고하고 해당 메모리 주소의 값을 가져 오는 중 오류가 발생했습니다. 아래 이중 포인터 주소를 저장하고 해당 값을 검색하십시오.

내가 컴파일하려고 코드입니다 : 다음 위의 코드를 실행하면

struct doubleValue{ 
    double a; 
}; 

int main(){ 
    doubleValue *DBL = new doubleValue; 
    DBL->a=15; 
    // now I want to store the address of DBL->a in a double pointer and print out the value of double pointer. 
    double &doubelPtr = &DBL->a; 
    cout<< *doubelPtr; // this value should be 15 
} 

내가 컴파일러 오류 "오류 : 유형의 const가 아닌 참조 '더블 &'에서의 잘못된 초기화 '더블 *'유형의를 rvalue 더블 & doubelPtr = & DBL->은, ^ "

누군가가 나에게이 코드를 해결하는 데 도움이 수

? 감사!

+1

'참조 연산자'('&')와'주소 연산자'('&')의 차이점을 배우십시오. 그것들은 같은 것은 아니지만 샘플 프로그램에서 두 가지를 모두 사용했습니다. – PaulMcKenzie

+0

포인터를 사용하여 중지 (!) - 인스턴스를 사용하십시오 (여기서는 단순한 이중입니다) –

답변

0

이중 & doubelPtr이 포인터 대 기준의 경우와 * doubelPtr

0

배이어야한다;

double &doublePtr 

는 주소가 아닌 참조입니다. 당신은 잘못 여기 reference 연산자를 사용하는

double *doublePtr 
2

와 함께이 일을 시도 :

double &doubelPtr = &DBL->a; 

당신은 포인터를 선언해야하고 여기에 주소를 할당합니다.

double *doubelPtr = &DBL->a; 

위의 코드는 address-of 연산자를 사용합니다. 두 연산자 (참조 및 주소)가 동일한 기호 &을 사용한다는 것이 혼란 스럽지만 그게 그 방법입니다.

그러나 왜 이렇게해야하는지 궁금합니다. double에 대한 포인터가 필요한 함수를 호출했기 때문입니까? 그렇다면 두 배로 포인터를 선언하고 할당하는 로터리 방식을 수행 할 필요가 없습니다. 함수의 double 주소를 전달하면됩니다.

+0

알아 냈습니다. 올바른 코드 : double &doublePtr = DBL->a; cout<<*doublePtr;

관련 문제