#include <stdio.h>

int main() {
    // 포인터 : 주소를 저장하는 변수
    int a = 10;
    int *p = &a;
    printf("a = %d\n", a);
    printf("a의 주소 = %p\n", p);

    // 포인터 변수 선언
    // 자료형 *변수이름;
    int *b;

    // 변수 앞에 &을 붙이면 변수의 주소를 나타낸다
    b = &a;

    // 간접 참조 연산자 * : 선언된 변수 앞에 붙여서, 주소로 이동해서 그 값을 가져오라는 의미
    *b = 20; // a = 20
    printf("a = %d\n", a);

    int x = 3;
    int y = 7;
    int *ptr = &x;
    
    *ptr = y;     // x = 
    ptr = &y;     // ptr 변수에 y의 주소를 저장
    *ptr = 10;    // y = 10

    //num1, num2의 값을 예상하기
    printf("----문제----\n");
    int num1 = 8, num2 = 15;
    int *ptr1 = &num1;
    int *ptr2 = &num2;

    *ptr1 = *ptr2;   // num1 = 15
    ptr2 = ptr1;     // ptr2 = num1의 주소 (&num1)
    *ptr2 = 50;      // num1 = 50

    printf("num1 = %d\n", num1);
    printf("num2 = %d\n", num2);
    printf("num1의 주소 = %p\n", &num1);
    printf("num2의 주소 = %p\n", &num2);
    printf("ptr1 = %p\n", ptr1);
    printf("ptr2 = %p\n", ptr2);

    
    printf("----숙제----\n");
    int c1 = 13;
    int c2 = 26;

    int *k = &c1;
    int *t = &c2;

    *k = *t;   // c1 = 26
    t = k;     // t = &c1
    *t = 50;   // c1 = 50
    k = &c2;  
    *k = 7;    // c2 = 7
   
    // c1, c2, k, t의 값을 예측해서 아래 답을 채워보세요.
    // c1 = 50
    // c2 = 7
    // k = &c2
    // t = &c1

    printf("c1 = %d\n", c1);
    printf("c2 = %d\n", c2);
    printf("k = %p, %d\n", k, *k);
    printf("t = %p, %d\n", t, *t);
    
    return 0;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: