#include <stdio.h>
/* 이중 포인터 수업 전략
1. 그림 그리기
2. 표 만들기
그림에서 포인터 구조로 옳게 표현된 번호 = 2
표에서 변수의 출력값 =              */
int main(){
    char str[4][3]={"ab", 
                    "cd", 
                    "ef", 
                    "gh"};  
    /* str[4][3]= {'a', 'b', '\0',
                   'c', 'd', '\0',
                   'e', 'f', '\0',
                   'g', 'h', '\0'}  */
    //배열에 한칸씩 들어가고, 각 행 마지막에는 '\0' null이 다 들어감
    char **p;  //이중 포인터
    char *mid[4];  //문자열 시작 주소를 저장하는 포인터 배열
    int i;
    for(i=0; i<4; i++){  //각 문자열의 시작 주소 저장
        mid[i]=str[i];
        printf("%s ", mid[i]); //ab, cd, ef, gh 모두 출력함.
        }
    p=mid;  //p->mid[0]

    printf("%s\n", *(p+1));  //cd
    //i번째 문자열의 시작 주소(char *)   
    //mid[1]의 값은 "cd"의 시작 주소(char *)이고, %s가 그 주소부터 문자열 출력
    printf("%c\n", **(p+1));  //c
    //i번째 문자열의 첫 번째 문자  mid[1][0]의 값
    printf("%c\n", *(*(p+2)+1));  //f
    //i번째 문자열의 두 번째 문자  mid[2][1]의 값
    return 0;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: