[데일리 문제] 정처기 실기 124번 문제 - C언어 포인터 변수

생성일:

1 분 소요

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() 함수에서 출력을 할 때,

    을 출력하는 경우에는 *‘를 붙이고,

    주소값을 출력하는 경우에는 ‘*‘을 붙이지 않습니다

댓글남기기