본문 바로가기
개념/혼자 공부하는 C언어

chapter 15) 포인터 배열의 값을 출력하는 함수

by kiseno 2024. 9. 14.
728x90
반응형
SMALL
#include <stdio.h>
void print_str(char **pps, int cnt);

int main(void){
    char *ptr_ary[] = {"eagle", "tiger", "lion", "squirrel"};
    int count;

    count = sizeof(ptr_ary)/ sizeof(ptr_ary[0]);
    print_str(ptr_ary, count);

    return 0;
}

void print_str(char **pps, int cnt){
    int i;
    for (i = 0; i< cnt; i++){
        printf("%s\n", pps[i]);
    }
}

 

### `main` 함수

- `char *ptr_ary[] = {"eagle", "tiger", "lion", "squirrel"};`는 문자열의 배열을 선언하고 초기화합니다. 배열의 각 요소는 `char` 포인터이며, 문자열 리터럴의 주소를 저장합니다.
- `count = sizeof(ptr_ary) / sizeof(ptr_ary[0]);`를 통해 배열의 길이(요소의 개수)를 계산합니다. `sizeof(ptr_ary)`는 배열 전체의 크기를 바이트 단위로 반환하고, `sizeof(ptr_ary[0])`는 배열의 첫 번째 요소의 크기를 반환합니다. 이를 나눔으로써 배열에 저장된 문자열의 수를 얻습니다.
- `print_str(ptr_ary, count);`는 문자열 배열과 그 길이를 `print_str` 함수에 전달합니다.

### `print_str` 함수

- 이 함수는 `char **pps, int cnt` 매개변수를 받습니다. `char **pps`는 문자열 포인터의 포인터로, 문자열 배열(정확히는 포인터 배열)을 가리킵니다. `int cnt`는 배열에 저장된 문자열의 수입니다.
- for 루프를 사용하여 배열의 각 요소를 순회합니다. `printf("%s\n", pps[i]);`를 통해 각 문자열을 출력합니다. `pps[i]`는 i번째 문자열 포인터를 참조하며, `%s` 형식 지정자를 통해 해당 문자열이 출력됩니다.

### 코드의 작동

이 프로그램은 네 가지 동물 이름("eagle", "tiger", "lion", "squirrel")을 포함하는 포인터 배열을 선언합니다. 배열의 각 요소는 문자열의 주소를 저장하는 포인터입니다. `print_str` 함수는 이 배열을 매개변수로 받아, 각 문자열을 출력합니다. 결과적으로 네 개의 동물 이름이 각각 새로운 줄에 출력됩니다.

728x90
반응형
LIST