#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` 함수는 이 배열을 매개변수로 받아, 각 문자열을 출력합니다. 결과적으로 네 개의 동물 이름이 각각 새로운 줄에 출력됩니다.
'개념 > 혼자 공부하는 C언어' 카테고리의 다른 글
chapter 15) void 포인터 사용 (0) | 2024.09.16 |
---|---|
chapter 15) 포인터와 이중 포인터의 관계 (0) | 2024.09.15 |
chapter 15) 주소로 쓰이는 배열명과 배열의 주소 비교 (0) | 2024.09.13 |
chapter 15) 이중 포인터를 사용한 포인터 교환 (0) | 2024.09.12 |
chapter 15) 배열 포인터로 3차원 배열의 값 출력 (0) | 2024.09.11 |