💻 프로그래밍/C, C++

[C] 포인터(pointer)

gameuiux 2024. 5. 27. 23:55
728x90
반응형

포인터(pointer)

C 언어에서 포인터(pointer)는 메모리 주소를 가리키는 변수

포인터는 다른 변수나 메모리 주소의 위치를 저장하고 이를 통해 메모리의 특정 위치에 접근할 수 있다.

 

포인터는 C 언어에서 매우 중요한 개념으로, 메모리 관리, 배열 처리, 함수 호출 등에서 유용하게 사용된다.

 

 

 

포인터의 주요 개념과 사용법

1. 포인터 선언

포인터를 선언할 때는 데이터 타입 뒤에 *를 붙인다.

int *ptr; // 정수형 포인터 변수 ptr 선언

 

2. 포인터 초기화

포인터는 선언한 후 메모리 주소를 할당받아야 한다.

주소 연산자 &를 사용하여 변수의 주소를 얻을 수 있다.

int var = 10;
int *ptr = &var; // 변수 var의 주소를 포인터 ptr에 할당

 

3. 포인터 사용

포인터를 통해 간접 참조(dereference) 연산자인 *를 사용하여 포인터가 가리키는 메모리 위치의 값을 읽거나 쓸 수 있다.

int var = 10;
int *ptr = &var;
printf("%d\n", *ptr); // ptr이 가리키는 변수의 값(10)을 출력
*ptr = 20; // ptr이 가리키는 변수의 값을 20으로 변경
printf("%d\n", var); // var의 값이 20으로 변경됨

 

4. 포인터와 배열

배열의 이름은 배열의 첫 번째 요소의 주소를 가리키는 포인터와 같다.

int arr[3] = {1, 2, 3};
int *ptr = arr; // 배열의 첫 번째 요소의 주소를 ptr에 할당
printf("%d\n", *(ptr + 1)); // 두 번째 요소의 값을 출력 (2)

 

5. 포인터와 함수

포인터를 함수의 인자로 사용하여 함수가 변수의 값을 직접 수정할 수 있다.

void increment(int *p) {
    (*p)++;
}

int main() {
    int a = 5;
    increment(&a); // a의 주소를 전달
    printf("%d\n", a); // a의 값이 6으로 증가
    return 0;
}

 

포인터는 C 언어의 강력한 기능 중 하나로, 효율적인 메모리 관리를 가능하게 하지만

잘못된 사용은 치명적인 오류를 초래할 수 있으므로 주의가 필요하다.

728x90
반응형