2013-10-19 2 views

답변

0

은 현재 값에 대한 포인터를 반환하고 있습니다 :

int* f(int* p) 
^^^^ 

그것은 당신이 그것에 대한 참조를 보유 할 수없는 의미, 복사, 임시입니다.

+2

'f '의 구현을 보지 않고 "수정"을 제안 하시겠습니까? 컴파일러가 포착하지 못한 매달려있는 참조를 작성하여 다음과 훨씬 나쁜 문제를 만들 수도 있습니다. –

+0

@DanielFrey 나는'main' 내부에 생성 된 포인터를 반환한다고 가정합니다. – 0x499602D2

+0

그리고 어떻게 그 포인터를 얻을 것입니까? 'f'에 대한 매개 변수는 그 포인터의 * copy *이므로, 그것에 대한 참조를 반환 할 수 없습니다! –

0

f(p)이 반환 한 포인터를 참조하려고 했으므로 작동하지 않습니다.이 포인터는 식 끝에서 오른쪽 범위를 벗어나는 임시 포인터입니다. 매달려있는 참조를 만들고 컴파일러가 그렇게하지 못하게 할 것입니다.

관련 문제