반응형
메모리의 주소값을 표현할 때 보통 16진수로 나타낸다. 16진수를 나타낼 때 형식 연산자로 %x를 사용한다. 하지만, 메모리 주소값을 알고 싶을 때 사용하는 형식 연산자 %p도 존재한다는 것을 우리는 알고 있다.
그렇다면 형식 연산자 %p와 %x의 차이점은 무엇일까? 간단한 예제를 통해 알아보자.
#include <stdio.h>
int main(void){
int a = 10;
printf("x : %x\n", &a);
printf("p : %p\n", &a);
printf("x : %x\n", a);
printf("p : %p\n", a);
}
ERROR
p : 0x7ffe9385607c
x : 64
ERROR
맨 아래 출처의 예에 의하면 위의 네 값은 모두 나온다. 하지만 나의 경우, 출력에 위와 같은 에러가 발생하여 실행이 되지 않았다. 에러의 내용은 선언한 자료형과 형식 연산자가 매칭이 되지 않아 출력을 할 수 없다는 내용이었다.
그래서 나의 결론은 "메모리 주소를 나타낼 때에는 %p를 사용하고, 메모리 값이 아닌 일반 값을 16진수로 나타내고 싶을 때에는 %x를 사용하자" 이다.
부스트 강의를 수강하면서 작성하였던 코드를 다시 살펴보니, 메모리 주소를 나타낼 때에는 모두 %p를 사용했더라.
반응형
'Education' 카테고리의 다른 글
[부스트 코딩 뉴비 챌린지 2020] week6_LIVE 강의 (0) | 2020.08.21 |
---|---|
[제주코딩베이스캠프] 웹개발 30분 요약 - 6. 30분 요약시리즈 - CSS (0) | 2020.08.19 |
[부스트 코딩 뉴비 챌린지 2020] C언어: 포인터에 자료형은 왜 붙일까? (0) | 2020.08.18 |
[제주코딩베이스캠프] 웹개발 30분 요약 - 5. 30분 요약시리즈 - HTML (0) | 2020.08.18 |
[제주코딩베이스캠프] 웹개발 30분 요약 - 4. 30분 요약시리즈 - Python 2부 (0) | 2020.08.18 |