#include <stdio.h>

#define COUNT_OF_PCHAR 3

int main(void) {
    char *ptrStore[COUNT_OF_PCHAR] = {0};
    char **ptr = &ptrStore[0];
    int n, m;
    char *temp;
    char *string3 = "YOU";
    char *string2 = "FOR";
    char *string1 = "BOOK";

    // before store any pointer to it
    printf("before:\n");
    printf("ptrStore[0] 位址:%p\n", ptrStore[0]);
    printf("ptrStore[1] 位址:%p\n", ptrStore[1]);
    printf("ptrStore[2] 位址:%p\n", ptrStore[2]);
    printf("\n");

    temp = string1;
    *ptr = temp;
    *(ptr + 1) = string2;
    *(ptr + 2) = string3;

    // after store pointer to it
    printf("after:\n");
    printf("ptrStore[0] 位址:%p\n", ptrStore[0]);
    printf("ptrStore[1] 位址:%p\n", ptrStore[1]);
    printf("ptrStore[2] 位址:%p\n", ptrStore[2]);
    printf("\n");
    
    printf("\"BOOK\" 位址:%p\n", string3);
    printf("\"FOR\" 位址:%p\n", string2);
    printf("\"YOU\" 位址:%p\n", string1);
    printf("\n");
    
    printf("string3 位址:%p\n", &string3);
    printf("string2 位址:%p\n", &string2);
    printf("string1 位址:%p\n", &string1);
    printf("\n");

    for (n = 0; n < COUNT_OF_PCHAR; n++) {
        printf("*(ptr+%d) 所存的位址 %p\n", n, *(ptr + n));
        printf("(ptr+%d) 本身的位址 %p\n", n, (ptr + n));
        printf("*(ptr+%d) 指向字串 %s\n", n, *(ptr + n));
        for (m = 0; *(*(ptr + n) + m) != '\0'; m++) {
            printf("*(*(ptr+%d)+%d) = %c \n", n, m, *(*(ptr + n) + m));
        }

    }
    return 0;
}
