본문 바로가기
C_language

c 언어 포인터

by 헬로제이콥 2024. 8. 27.

 

 

 

 

1. 포인터의 개념

  • 포인터란 다른 변수의 주소를 저장하는 변수입니다.
  • 우리가 집에 살고 있다고 생각해보세요. 집 주소를 알고 있으면 그 집에 가서 누구를 만날 수 있겠죠? 포인터는 이렇게 변수의 주소를 알고 있어서, 그 변수에 접근할 수 있게 해줍니다.

2. 포인터의 선언과 사용

  • 포인터를 선언할 때는 변수 타입 앞에 *를 붙입니다.
int *ptr; // 정수를 가리키는 포인터 ptr 선언
int a = 10;
ptr = &a; // ptr에 a의 주소를 저장

 

3. 배열과 포인터의 관계

  • 배열의 이름은 배열의 첫 번째 요소의 주소입니다. 즉, 배열 이름을 포인터처럼 사용할 수 있습니다.
  • 예를 들어, arr[0]의 주소는 &arr[0]와 같습니다.

 

예제: 포인터와 배열 사용하기

다음은 포인터와 배열을 사용하는 간단한 예제입니다.

#include <stdio.h>

int main() {
    int numbers[5] = {10, 20, 30, 40, 50}; // 정수 배열 선언
    int *ptr; // 포인터 선언

    ptr = numbers; // 배열의 첫 번째 요소 주소를 ptr에 저장

    printf("배열의 요소를 포인터를 사용해 출력합니다:\n");
    
    for (int i = 0; i < 5; i++) {
        printf("numbers[%d] = %d\n", i, *(ptr + i)); // 포인터를 사용하여 값 출력
    }

    return 0;
}

예제 설명

  1. 배열 선언: numbers라는 배열을 선언하고 5개의 정수를 저장합니다.
  2. 포인터 사용: ptr이라는 포인터를 선언하고, 이 포인터에 배열의 첫 번째 요소의 주소를 저장합니다.
  3. 출력: for문을 사용하여 포인터를 통해 배열의 각 요소를 출력합니다. *(ptr + i)는 포인터를 사용하여 배열의 각 요소에 접근합니다.

 

포인터와 문자열

포인터를 사용하여 문자열을 출력하는 방법을 보여줍니다.

#include <stdio.h>

int main() {
    char str[] = "안녕하세요"; // 문자열 배열 선언
    char *ptr = str; // 문자열의 첫 번째 문자 주소를 포인터에 저장

    printf("문자열을 포인터로 출력합니다:\n");
    
    while (*ptr != '\0') { // 문자열의 끝을 만날 때까지 반복
        printf("%c ", *ptr); // 포인터가 가리키는 문자 출력
        ptr++; // 포인터를 다음 문자로 이동
    }
    printf("\n");

    return 0;
}

 

  • str이라는 문자열 배열을 선언합니다.
  • ptr 포인터에 문자열의 첫 번째 문자의 주소를 저장합니다.
  • while 루프를 사용하여 포인터가 가리키는 문자를 하나씩 출력합니다. 문자열의 끝은 '\0'로 표시됩니다.