본문 바로가기
온라인 멘토와 함께하는 공부/인공지능

[C언어] C언어에서의 포인터 개념

by 열공노년 2023. 10. 24.
반응형

C언어에서의 포인터 개념

포인터란?

포인터는 메모리의 주소를 저장하는 변수입니다. 포인터를 사용하면 메모리를 효율적으로 관리하고, 다른 변수나 함수, 배열 등에 대한 레퍼런스를 쉽게 다룰 수 있습니다.

포인터의 선언

포인터를 선언할 때는 asterisk(*) 기호를 사용합니다. 예를 들어, 정수형 포인터와 문자형 포인터를 선언하는 방법은 다음과 같습니다.

int *int_ptr;
char *char_ptr;

주소 연산자와 간접 참조 연산자

  • 주소 연산자 &: 변수의 메모리 주소를 반환합니다.
  • 간접 참조 연산자 *: 포인터가 가리키는 주소에 저장된 값을 반환합니다.
int a = 10;
int *p = &a;

printf("%d\n", *p);  // 출력: 10

포인터와 배열

배열의 이름은 배열의 첫 번째 요소의 주소를 나타냅니다. 따라서 포인터를 사용하여 배열의 요소에 접근할 수 있습니다.

int arr[3] = {1, 2, 3};
int *p = arr;

printf("%d\n", *(p + 1));  // 출력: 2

포인터의 산술 연산

포인터는 산술 연산이 가능합니다. ++, --, +, - 등의 연산자를 사용할 수 있으며, 이를 통해 메모리 주소를 쉽게 탐색할 수 있습니다.

함수와 포인터

포인터를 매개변수로 사용하거나 반환 값으로 사용할 수 있습니다. 이를 통해 함수 외부의 변수를 수정하거나, 동적으로 할당된 메모리의 주소를 반환할 수 있습니다.

void modifyValue(int *p) {
    *p = 20;
}

int main() {
    int a = 10;
    modifyValue(&a);
    printf("%d\n", a);  // 출력: 20
}

포인터의 주의사항

  • 초기화되지 않은 포인터를 사용하면 불명확한 동작이 발생할 수 있습니다.
  • 메모리 누수: 동적으로 할당한 메모리는 반드시 free 함수를 사용하여 해제해야 합니다.

포인터는 C언어에서 매우 중요한 개념입니다. 메모리를 직접 관리할 수 있는 능력은 C언어가 시스템 프로그래밍, 임베디드 프로그래밍 등에서 자주 사용되는 이유 중 하나입니다. 따라서 포인터를 정확하게 이해하고 사용할 줄 아는 것은 중요합니다.

달리 그림

반응형