컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Friday, May 04, 2007

C언어] printf 함수에서 %p 의미. 변수 번지, 포인터 변수 주소 출력; Print Pointer Address


printf() 함수의 형식 지정자 중에는 "%p" 라는 것이 있습니다. "퍼센트 기호" + "소문자P" 입니다. 이것은 변수의 값이 아닌, 변수의 주소를 헥사로 표현할 때 사용하는 것입니다. 다음 예제와 같습니다.

변수 주소 출력, 포인터 변수 주소 구하기 예제


소스 파일명: example.cpp
(※ 스크롤 박스 사용법: 박스 안을 마우스로 클릭한 후, 키보드의 좌우 화살표키를 누르면 양옆으로 움직일 수 있습니다. 박스에서 다시 나오려면, 박스 바깥의 아무곳이나 클릭하면 됩니다.)
#include <stdio.h>

int main(void) {

  // 일반 변수의 주소 출력
  int i = 999;
  printf("0x%p\n", &i); // "주소 연산자 (&)" 를 붙여, 변수 i의 주소를 구함
  // 출력 결과: 0x0012FF6C
  // 위의 헥사 주소는 컴퓨터 상황에 따라 다름


  // 포인터 변수의 주소 출력
  int* cool = &i; // 변수 i의 주소를, 포인터 변수인 cool에 대입
  printf("0x%p\n", &cool); // 포인터 변수 cool 의 주소 출력
  // 출력 결과: 0x0012FF70
  // 위의 헥사 주소는 컴퓨터 상황에 따라 변동


  // 그러나 이렇게 하면, cool 의 주소가 아닌
  // i 의 주소가 다시 출력됨. cool에 i의 번지(&i)가 들어 있기에
  printf("0x%p\n", cool);
  // 출력 결과: 0x0012FF6C




  printf("%d\n", i); // 정수 변수 i 의 값 출력
  // 999

  // 또는
  printf("%d\n", *cool);
  // 999
  // 포인터 변수 cool 앞에 별표(*;애스터리스크)를 붙이면
  // 포인터 변수가 가리키는 값을 추출한다는 의미가 됨
  // cool에 i의 주소가 들어 있고, i의 값은 999 이기에
  // *cool 도 999 임.
  // 그러나 int* cool 또는 int *cool 이런 것은
  // 포인터 변수를 선언한다는 의미이기에
  // 전혀 다른 별표임


  return 0;
}



▶▶ C언어] 별표(*) 기호 의미, 뜻; Asterisk Pointer Operator




tag: cpp
C언어 | C/C++ (Visual C++) 프로그래밍

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top