728x90

문제2) int 형 벼수 num1과 num2를 선언과 동시에 각각 10과 20으로 초기화하고,int형 포인터 변수 ptr1과 ptr2를 선언하여 각각num1과 num2를 가르키게 하자. 그리고 이 상태에서 포인터 변수 ptr1과 ptr2를 이용해서 num1의 값을 10 증가시키고, num2 값을 10 감소시키자.

이제 두 포인터 변수 ptr1과 ptr2가 가르키는 대상을 서로 바꾸자. 즉, 포인터 변수 ptr1이 num2를 가르키게 하고, 포인터 변수 ptr2가 num1을 가르키게 하자. 그리고 마지막으로 ptr1과 ptr2가 가르키는 변수에 저장된 값을 출력하자

#include <stdio.h>
int main(void){
    int num1=10;
    int num2=20;
    int *ptr1=&num1;
    int *ptr2=&num2;
    (*ptr1)+=10;
    (*ptr2)-=10;
    int temp=(*ptr1);
    (*ptr1)=(*ptr2);
    (*ptr2)=temp;
    printf("%d %d", *ptr1, *ptr2);
}

일단 num1과 num2를 초기화 하면서 10과 20을 넣는다. 그리고 포인터 변수를 만들어서 각각의 주소값을 선언해준다. 이후에 10을 더하고 10을 빼주면서 만들어 준다. 그리고 temp를 선언하여 메모리 공간을 각각 바꾸어준 다음에 이를 출력하면 된다. 이때에는 ptr1과 ptr2를 포인터로 가르켜야지 num1과 num2를 가르킬 수 있다.

728x90

+ Recent posts