Friday, May 04, 2007
C언어] printf 함수에서 %p 의미. 변수 번지, 포인터 변수 주소 출력; Print Pointer Address
printf() 함수의 형식 지정자 중에는 "%p" 라는 것이 있습니다. "퍼센트 기호" + "소문자P" 입니다. 이것은 변수의 값이 아닌, 변수의 주소를 헥사로 표현할 때 사용하는 것입니다. 다음 예제와 같습니다.
소스 파일명: example.cpp
(※ 스크롤 박스 사용법: 박스 안을 마우스로 클릭한 후, 키보드의 좌우 화살표키를 누르면 양옆으로 움직일 수 있습니다. 박스에서 다시 나오려면, 박스 바깥의 아무곳이나 클릭하면 됩니다.)
▶▶ C언어] 별표(*) 기호 의미, 뜻; Asterisk Pointer Operator
변수 주소 출력, 포인터 변수 주소 구하기 예제
소스 파일명: 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;
}
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++) 프로그래밍
<< Home