본문 바로가기
프로그래밍언어/C 언어

[혼자 공부하는 C언어] 이중 포인터 활용 2 : 포인터 배열을 매개변수로 받는 함수

by khsnote22 2022. 12. 13.

http://www.yes24.com/Product/Goods/74269921?pid=123487&cosemkid=go15604913615239458&gclid=CjwKCAiAv9ucBhBXEiwA6N8nYAhvMUtGL3MQmVv9zcKrRhC6SdIL-LPFRvdBE6w3RVq4oJzoyhzvTRoCuuUQAvD_BwE 

 

혼자 공부하는 C 언어 - YES24

혼자 해도 충분하다! 1:1 과외하듯 배우는 C 프로그래밍 자습서이 책은 독학으로 C 언어를 배우는 입문자가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있도록 구성했다. ‘무엇을’ ‘어떻게’ 학

www.yes24.com


이중 포인터는 포인터 배열을 매개변수로 받는 함수에도 사용합니다. 배열명은 첫 번째 배열 요소의 주소이므로 int형 배열의 이름은 int형 변수의 주소입니다. 마찬가지로 int형 포인터 배열의 이름은 int형 포인터의 주소가 됩니다.  따라서 포인터 배열의 배열명은 이중 포인터에 저장합니다. 

 

#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]);
    }
}

포인터가 배열명을 저장하면 배열명처럼 쓸 수 있으므로 함수 안에서는 매개변수를 배열명처럼 사용하여 문자열을 출력합니다.