프로그래밍/겁나 쉽게 쓴 C, C++ 설명서

포인터란?

tonystark100 2024. 4. 30. 22:26

목차

    반응형

    포인터란?

    반응형

    C언어에서 포인터는 메모리의 주소를 저장하는 변수입니다. 포인터를 사용하면 메모리의 특정 위치에 직접 접근할 수 있습니다. 이는 배열, 동적 메모리 할당, 함수 포인터, 연결 리스트 등과 같은 고급 프로그래밍 기법을 가능하게 합니다.

     

    포인터 선언

    type *pointerName;

    여기서 type은 포인터가 가리킬 변수의 데이터 타입을 나타내며, pointerName포인터의 이름을 나타냅니다.

     

    예를 들어, 정수형 포인터를 선언하려면 다음과 같이 작성할 수 있습니다.

    int *p;

    이 코드는 p라는 이름의 정수형 포인터를 선언합니다.

     

    주소 할당

    포인터에 주소를 할당하려면 & 연산자를 사용합니다. & 연산자는 변수의 메모리 주소를 반환합니다.

    int x = 10;
    int *p = &x;

    이 코드는 x의 주소를 p에 할당합니다. 따라서 p는 이제 x를 가리킵니다.

     

     

     

    로또로 화성 - Google Play 앱

    간편한 로또 번호 생성 및 QR 결과 확인 어플입니다.

    play.google.com

     

    포인터가 가리키는 주소의 값 읽기, 변경

    포인터를 통해 변수의 값을 읽거나 변경하려면 * 연산자를 사용합니다. * 연산자는 포인터가 가리키는 주소의 값을 반환합니다.

    int x = 10;
    
    int *p = &x;
    
    printf("%d\n", *p); // 10을 출력
    
    *p = 20;
    
    printf("%d\n", x); // 20을 출력

    이 코드는 p를 통해 x의 값을 읽고 변경합니다.

     

    포인터 주의사항

    포인터는 매우 강력한 도구이지만, 잘못 사용하면 예기치 않은 결과를 초래할 수 있습니다. 따라서 포인터를 사용할 때는 항상 주의해야 합니다. 특히, 초기화되지 않은 포인터를 사용하거나, 알지 못하는 주소를 가리키거나, 할당된 메모리를 해제한 후에 포인터를 사용하는 등의 실수는 절대로 해서는 안 됩니다. 이러한 실수는 실행 오류를 발생시키며, 디버깅이 어렵습니다.

     

    반드시 알아야 하는 포인터 개념 정리

    포인터 선언 : 포인터는 특정 타입의 변수를 가리키는 변수. 포인터의 타입은 가리키는 변수의 타입에 따라 달라집니다.


    주소 연산자 (&) : 주소 연산자는 변수의 메모리 주소를 반환. 예를 들어, &num은 변수 num의 주소를 반환합니다.

     

    간접 참조 연산자 (*) : 간접 참조 연산자는 포인터가 가리키는 주소에 저장된 값을 반환. *p는 포인터 p가 가리키는 주소의 값을 반환합니다.

     

    NULL 포인터 : NULL 포인터는 아무것도 가리키지 않는 포인터를 의미. 포인터를 선언할 때는 항상 NULL로 초기화하는 것이 좋습니다.

     

    포인터와 배열 : C 언어에서 배열 이름은 배열의 첫 번째 요소를 가리키는 포인터로 사용됨. 따라서 포인터를 사용하여 배열의 요소에 접근할 수 있습니다.

     

    동적 메모리 할당 : malloc, calloc, realloc, free 등의 함수를 사용하여 런타임에 메모리를 동적으로 할당하고 해제할 수 있습니다. 이는 포인터를 사용하여 수행됩니다.

     

    포인터와 함수 : 함수의 매개변수로 포인터를 사용하면 함수 내에서 원본 변수를 수정할 수 있습니다. 또한, 함수에서 동적으로 할당된 메모리의 주소를 반환할 수 있습니다.

     

    다음 글 함수란?

     

     

    ** 이 글이 좋았다면 좋아요와 구독을 눌러주세요. **

    반응형

    '프로그래밍 > 겁나 쉽게 쓴 C, C++ 설명서' 카테고리의 다른 글

    함수 매개변수 전달 방식  (0) 2024.04.30
    함수란?  (0) 2024.04.30
    배열이란?  (0) 2024.04.30
    라이브러리란?  (0) 2024.04.30
    상수란?  (0) 2024.04.29