포인터 아주 기초 질문....
조회수 373회
#include <stdio.h>
int main()
{
int a = 10;
int *pa = &a;
*pa = 20;
printf("%d", a);
return 0;
}
이 코드에서 a의 메모리자리?에 할당되어있는 10이 20으로 바뀌어서 printf로 출력할때 20으로 바뀌는게 맞나요??
너무 기초적인 질문해서 죄송합니다..
1 답변
-
네 맞습니다.
cling 이라는 c++ 인터프리터로 테스트 해봤습니다.
메모리 주소를 유심히 살펴보세요.
그리고 포인터 표현시 혼동이 될 수 있는 부분이
int *pa = &a
표시인데 이것을int* pa = &a
형태로 * 를 자료형쪽에 붙이면 더 읽기가 좋습니다. 즉 "변수 pa는 int 포인터 타입이다"라고 자연스럽게 읽힙니다.[cling]$ int a = 10 (int) 10 [cling]$ &a (int *) 0x7fa318174010 [cling]$ int *pa = &a (int *) 0x7fa318174010 [cling]$ *pa = 20 (int) 20 [cling]$ pa (int *) 0x7fa318174010 [cling]$ a (int) 20
댓글 입력