본문 바로가기
C/☞

[42] 포인터 기본

by TR. 2020. 7. 23.

포인터 Pinter

ㄴ 주소를 저장하는 변수 (4byte)

ㄴ 포인터는 변수의 주소를 저장한다.

 

1) 선언 
자료형 *변수명;

 

2) 사용

포인터명 = &일반변수명;

ㄴ 주소 : 변수명 앞에 &앤퍼센드를 붙임

ㄴ 주소만 저장할 수 있음

 

    // 포인터

    int a = 10;			                // 일반변수의 선언과 초기화(값 대입)
    int *p = &a;		                // 포인터변수의 선언과 초기화(일반변수 주소 대입)
    
    //
    char c = 0;                                 // 1 byte
    int n = 0;                                  // 4 byte
    double d = 0;                               // 8 byte

    char *cp = &c;                              // 4 byte(on 32 bits)
    int *np = &n;                               // 4 byte
    double *dp = &d;                            // 4 byte

    printf("c의 사이즈는 %d 이다.\n", sizeof(c));
    printf("n의 사이즈는 %d 이다.\n", sizeof(n));
    printf("d의 사이즈는 %d 이다.\n", sizeof(d));
    printf("\n");

    printf("cp의 사이즈는 %d 이다.\n", sizeof(cp));
    printf("np의 사이즈는 %d 이다.\n", sizeof(np));
    printf("dp의 사이즈는 %d 이다.\n", sizeof(dp));
    printf("\n");

    printf("c의 주소는 %p 이다.\n", &c);           // %p 16진수 자료형
    printf("n의 주소는 %p 이다.\n", &n);
    printf("d의 주소는 %p 이다.\n", &d);
    printf("\n");

    printf("포인터 cp의 값은 %p 이다.\n", cp);
    printf("포인터 np의 값은 %p 이다.\n", np);
    printf("포인터 dp의 값은 %p 이다.\n", dp);
    printf("\n");

    printf("포인터 cp의 주소는 %p 이다.\n", &cp);   // c와 cp의 주소는 다름
    printf("포인터 np의 주소는 %p 이다.\n", &np);
    printf("포인터 dp의 주소는 %p 이다.\n", &dp);
    printf("\n");

 

    // 값을 대입하는 2가지 방법
    // 1) 직접
    int a = 10;
    
    // 2) 간접 (포인터 변수를 활용한, 주소 접근방식)
    int *p = &a;
    *p = 20;
    printf("a : %d\n", *p);

    // #포인터가 필요한 이유
    // . 값을 직접 대입을 하려면 해당 지역(함수) 안에 있는 변수만 활용이 가능.
    // . 다른 지역에 있는 변수를 참조하려면 '주소값'이 필요함. -> 주소를 담은 포인터 변수
    
    // 예) scanf 함수의 사용 
    int age;
    scanf("%d", &age); // scanf("%d", &age);
                       // parameter 2개를 받음 (1, 2)
                       // 1. 자료형
                       // 2. 변수의 주소값
    printf("age : %d", age); 

 

 

'C > ' 카테고리의 다른 글

[44] 연습문제 : 포인터  (0) 2020.07.23
[43] 배열과 포인터  (0) 2020.07.23
[41] 셔플  (0) 2020.07.23
[40] 정렬  (0) 2020.07.23
[39]-A. 회원가입  (0) 2020.07.23

댓글