Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
관리 메뉴

냥집사의 개발일지

C언어 - 포인터 (Pointer) : 포인터 & 주소 본문

C언어

C언어 - 포인터 (Pointer) : 포인터 & 주소

깅햄찌 2022. 9. 9. 22:49
반응형

안녕하세요! 오늘은 포인터와 주소에 대해 알아보겠습니다. 

 

가장 큰 차이점은 주소는 상수라서 값이 바뀔 수 없고

포인터는 변수라서 포인터의 값을 바꿀 수 있습니다. 

 

아래 코드로 포인터의 값을 바꾸어 보고 빌드가 잘 되는지 확인해보았습니다.   

#include <stdio.h>

int main(){
    int temp1,temp2;
    int* temp_pointer;
    
    temp_pointer = &temp1;
    temp_pointer = &temp2;

    return 0;
}

빌드가 잘되었네요~~

 

두 번째 차이점은 주소의 크기와 포인터의 크기는 8byte 고정(64bit)이지만

포인터가 가리키는 변수의 크기는 할당된 자료형에 따라 가변적입니다!!

 

#include <stdio.h>

int main(){
    char temp_ch;
    int temp_int;
    double temp_db;
    
    char* temp_pointer_ch = &temp_ch;
    int* temp_pointer_int = &temp_int;
    double* temp_pointer_db = &temp_db;

    printf("address \n %d\n", sizeof(&temp_ch));
    printf("%d\n", sizeof(&temp_int));
    printf("%d\n", sizeof(&temp_db));

    printf("pointer \n%d\n", sizeof(temp_pointer_ch));
    printf("%d\n", sizeof(temp_pointer_int));
    printf("%d\n", sizeof(temp_pointer_db));

    printf("value that pointer points \n%d\n", sizeof(*temp_pointer_ch));
    printf("%d\n", sizeof(*temp_pointer_int));
    printf("%d\n", sizeof(*temp_pointer_db));

    return 0;
}

아래 그림과 같이 주소와 포인터의 크기는 8byte 지만 포인터가 가리키는 변수값은

char형 : 1byte, int형 : 4byte, double형 : 8byte인것을 확인할 수 있었습니다. 

 

지금까지 포인터와 주소에 대해 알아보았는데요.

다음 포스팅으로는 포인터를 사용하는 이유에 대해 알아보고자 합니다. 

그럼 다음에 봐요~ 좋은 하루 보내세요!!

Comments