[데일리 문제] 정처기 실기 124번 문제 - C언어 포인터 변수
124. 다음 C 프로그램 실행 결과를 쓰시오
#include <stdio.h>
int main()
{
int a = 10;
int *p = &a;
printf("%d %d\n", a, *p);
a = 30;
printf("%d %d\n", a, *p);
return 0;
}
-
정답
10 10
30 30
-
해설
int a = 10; 을 하게 되면 4바이트의 정수형 변수 a 를 만들고 10을 assign 합니다 (변수a에 10을 저장)
int *p = &a; 이부분이 바로 포인터 인데요
포인터 변수는 변수명 앞에 별 ‘*‘을 붙입니다
즉, 정수형 포인터 변수 p를 만들고 변수 a의 주소값을 assign 합니다 (a의 주소값을 포인터 변수 p에 저장)
printf(“%d %d\n”, a, *p); 변수 a에 저장된 10을 %d로 출력 합니다.
그리고 한칸 띄고 포인터변수가 가리키는 변수 a의 값 10을 %d로 출력 합니다
a=30; 에서 a에 있던 10은 날라가고 30이 새로 저장 됩니다
그리고 나서 다시 printf함수로 출력을 합니다
printf(“%d %d\n”, a, *p); 변수 a에 저장된 30을 %d로 출력 합니다.
그리고 한칸 띄고 포인터변수가 가리키는 변수 a의 값 30을 %d로 출력 합니다
추가해설)
포인터 변수는 주소값을 저장하는 변수 입니다
데이터타입에는 int, long, char, char[] 등 다양하게 있는데요
포인터 변수는 데이터타입은 동일하게 작성하고 위에도 설명 했듯이 변수명 앞에 ‘*‘을 붙입니다
또한 주소값은 위의 예제 처럼 일반 변수명 앞에 ‘&’를 붙이면 됩니다
그리고 포인터 변수는 printf() 함수에서 출력을 할 때,
값을 출력하는 경우에는 ‘*‘를 붙이고,
주소값을 출력하는 경우에는 ‘*‘을 붙이지 않습니다
댓글남기기