Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어에서 문자열 포인터 배열을 만드는 방법

문자열 포인터 배열이란?

C 언어에서 포인터 배열(array of pointers)은 각 요소가 문자열의 시작 주소(베이스 주소)를 가리키는 포인터로 구성된 배열을 의미합니다. 즉, 여러 개의 문자열을 2차원 문자 배열 대신 포인터를 이용해 효율적으로 관리할 수 있는 방법입니다.

선언과 초기화는 다음과 같이 수행합니다.

char *a[3] = {"one", "two", "three"};
// a[0]은 문자열 "one"의 시작 주소를 가리키는 포인터
// a[1]은 문자열 "two"의 시작 주소를 가리키는 포인터
// a[2]은 문자열 "three"의 시작 주소를 가리키는 포인터

장점

  • 2차원 문자 배열과 달리, 문자열 포인터 배열은 저장 공간의 크기가 고정되어 있지 않습니다.

  • 각 문자열이 실제로 필요한 만큼의 바이트만 차지하기 때문에 메모리 낭비가 없습니다.

예제 1

컴파일 시점에 문자열 포인터 배열을 선언하고 출력하는 기본적인 예제입니다.

#include<stdio.h>
main (){
    char *a[5] = {"one", "two", "three", "four", "five"}; // 컴파일 시점에 문자열 포인터 배열 선언
    int i;
    printf("The strings are:");
    for (i=0; i<5; i++)
        printf("%s", a[i]); // 문자열 배열 출력
    getch();
}

출력 결과

The strings are: one two three four five

예제 2

이번에는 학생 이름을 저장하는 문자열 포인터 배열의 또 다른 예제를 살펴보겠습니다.

#include <stdio.h>
#include <string.h>
int main(){
    // 문자열 포인터 배열 초기화
    char *students[] = {"bhanu", "ramu", "hari", "pinky"};
    int i, j, a;
    printf("The names of students are:\n");
    for(i=0; i<4; i++)
        printf("%s\n", students[i]);
    return 0;
}

출력 결과

The names of students are:
bhanu
ramu
hari
pinky

이처럼 문자열 포인터 배열을 활용하면 고정된 크기의 2차원 배열 없이도 여러 문자열을 유연하게 다룰 수 있으며, 메모리를 더욱 효율적으로 사용할 수 있습니다.