2012-01-11 1 views
2

나는 콘솔에 요소 주소를 넣고 싶지만 그곳에 문제가있다.배열 요소의 주소를 얻는 방법은 무엇입니까?

cout << &text[0] << endl;

내가 잘못 여기서 뭐하는 거지, 출력이 vaule 인 것 같다?

덕분에

+2

가 텍스트 ''의 정의를 보여 PRINTF도 사용할 stdio.h이 필요합니다. – unwind

+0

정의가 무엇을 의미하는지 확실하지 않습니까? 죄송합니다 – nullVoid

+0

@nullVoid'text'가 변수 – JaredPar

답변

9

당신은 IOSTREAMS로 인쇄 void *로 변환해야합니다, 당신은 안전 주소의 연산자 오버로드 & -operators 혼동되지 않습니다해야합니다. 즉 :

std::cout << static_cast<void*>(std::addressof(text[0])) << std::endl; 

당신은 <memory><iostream>뿐만 아니라 최근의 컴파일러가 필요합니다.


업데이트 :이 코드는 당신에게 피연산자의 정적 주소를 제공한다는 참고. 다형성 객체의 기본 참조를 전달하려면 대신 dynamic_cast<void*>(x)을 사용해야하지만이 경우 가상 함수가있는 다형성 객체 (즉, 가상 함수가있는 객체)의 경우 만 작동하며 실제 동적 객체의 주소를 제공합니다.

+0

캐스트가 필요합니까? –

+0

+1, iostream에 'void *'캐스트가 필요한 이유는 무엇입니까? – JaredPar

+0

@ Jared : iostreams에는'char *'같은 것들에 대한 오버로드가 있습니다. 우리는 그걸 원하지 않을거야. 그렇지? –

0

그냥 이런 식으로 작업을 수행합니다

printf("%p",text); 

당신은