>  기사  >  백엔드 개발  >  char 포인터로 작업할 때 'cout'이 주소 대신 문자를 인쇄하는 이유는 무엇입니까?

char 포인터로 작업할 때 'cout'이 주소 대신 문자를 인쇄하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-04 04:52:02579검색

Why does `cout` print the character instead of the address when working with char pointers?

cout을 사용한 Char 포인터 인쇄 이해

char 포인터를 다룰 때는 다양한 환경에서 어떻게 처리되는지 이해하는 것이 중요합니다. %u 및 %s 변환 지정자를 사용하는 print()는 인쇄 주소 또는 문자열을 제어하지만 cout을 사용할 때 문제가 발생합니다.

다음 코드 조각을 고려하세요.

<code class="cpp">char ch = 'a';
char *cptr = &ch;
cout << cptr << endl;

여기서, 원하는 출력은 cptr에 저장된 ch의 주소입니다. 그러나 기본적으로 cout은 cptr을 일반 문자열로 처리하고 주소 대신 'a' 문자를 인쇄하는 경향이 있습니다.

인쇄 딜레마 해결

이 문제를 해결하려면 다음이 필요합니다. cout이 cptr을 char 포인터가 아닌 void 포인터로 해석하도록 강제합니다. 이를 통해 우리는 특히 void 포인터를 처리하고 해당 주소를 인쇄하는 ostream& 연산자를 활용할 수 있습니다.

이를 달성하기 위해 다음과 같이 캐스트를 활용할 수 있습니다.

<code class="cpp">cout << static_cast<void *>(cptr) << endl;</code>

cptr을 무효 포인터가 있으면 과부하 해결 방법이 올바른 연산자를 선택하여 원하는 주소가 인쇄됩니다.

위 내용은 char 포인터로 작업할 때 'cout'이 주소 대신 문자를 인쇄하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.