#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("ptrStore[0] 位址:%p\n", ptrStore
[0]); printf("ptrStore[1] 位址:%p\n", ptrStore
[1]); printf("ptrStore[2] 位址:%p\n", ptrStore
[2]);
temp = string1;
*ptr = temp;
*(ptr + 1) = string2;
*(ptr + 2) = string3;
// after store pointer to it
printf("ptrStore[0] 位址:%p\n", ptrStore
[0]); printf("ptrStore[1] 位址:%p\n", ptrStore
[1]); printf("ptrStore[2] 位址:%p\n", ptrStore
[2]);
printf("\"BOOK\" 位址:%p\n", string3
); printf("\"FOR\" 位址:%p\n", string2
); printf("\"YOU\" 位址:%p\n", string1
);
printf("string3 位址:%p\n", &string3
); printf("string2 位址:%p\n", &string2
); printf("string1 位址:%p\n", &string1
);
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;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIENPVU5UX09GX1BDSEFSIDMKCmludCBtYWluKHZvaWQpIHsKICAgIGNoYXIgKnB0clN0b3JlW0NPVU5UX09GX1BDSEFSXSA9IHswfTsKICAgIGNoYXIgKipwdHIgPSAmcHRyU3RvcmVbMF07CiAgICBpbnQgbiwgbTsKICAgIGNoYXIgKnRlbXA7CiAgICBjaGFyICpzdHJpbmczID0gIllPVSI7CiAgICBjaGFyICpzdHJpbmcyID0gIkZPUiI7CiAgICBjaGFyICpzdHJpbmcxID0gIkJPT0siOwoKICAgIC8vIGJlZm9yZSBzdG9yZSBhbnkgcG9pbnRlciB0byBpdAogICAgcHJpbnRmKCJiZWZvcmU6XG4iKTsKICAgIHByaW50ZigicHRyU3RvcmVbMF0g5L2N5Z2AOiVwXG4iLCBwdHJTdG9yZVswXSk7CiAgICBwcmludGYoInB0clN0b3JlWzFdIOS9jeWdgDolcFxuIiwgcHRyU3RvcmVbMV0pOwogICAgcHJpbnRmKCJwdHJTdG9yZVsyXSDkvY3lnYA6JXBcbiIsIHB0clN0b3JlWzJdKTsKICAgIHByaW50ZigiXG4iKTsKCiAgICB0ZW1wID0gc3RyaW5nMTsKICAgICpwdHIgPSB0ZW1wOwogICAgKihwdHIgKyAxKSA9IHN0cmluZzI7CiAgICAqKHB0ciArIDIpID0gc3RyaW5nMzsKCiAgICAvLyBhZnRlciBzdG9yZSBwb2ludGVyIHRvIGl0CiAgICBwcmludGYoImFmdGVyOlxuIik7CiAgICBwcmludGYoInB0clN0b3JlWzBdIOS9jeWdgDolcFxuIiwgcHRyU3RvcmVbMF0pOwogICAgcHJpbnRmKCJwdHJTdG9yZVsxXSDkvY3lnYA6JXBcbiIsIHB0clN0b3JlWzFdKTsKICAgIHByaW50ZigicHRyU3RvcmVbMl0g5L2N5Z2AOiVwXG4iLCBwdHJTdG9yZVsyXSk7CiAgICBwcmludGYoIlxuIik7CiAgICAKICAgIHByaW50ZigiXCJCT09LXCIg5L2N5Z2AOiVwXG4iLCBzdHJpbmczKTsKICAgIHByaW50ZigiXCJGT1JcIiDkvY3lnYA6JXBcbiIsIHN0cmluZzIpOwogICAgcHJpbnRmKCJcIllPVVwiIOS9jeWdgDolcFxuIiwgc3RyaW5nMSk7CiAgICBwcmludGYoIlxuIik7CiAgICAKICAgIHByaW50Zigic3RyaW5nMyDkvY3lnYA6JXBcbiIsICZzdHJpbmczKTsKICAgIHByaW50Zigic3RyaW5nMiDkvY3lnYA6JXBcbiIsICZzdHJpbmcyKTsKICAgIHByaW50Zigic3RyaW5nMSDkvY3lnYA6JXBcbiIsICZzdHJpbmcxKTsKICAgIHByaW50ZigiXG4iKTsKCiAgICBmb3IgKG4gPSAwOyBuIDwgQ09VTlRfT0ZfUENIQVI7IG4rKykgewogICAgICAgIHByaW50ZigiKihwdHIrJWQpIOaJgOWtmOeahOS9jeWdgCAlcFxuIiwgbiwgKihwdHIgKyBuKSk7CiAgICAgICAgcHJpbnRmKCIocHRyKyVkKSDmnKzouqvnmoTkvY3lnYAgJXBcbiIsIG4sIChwdHIgKyBuKSk7CiAgICAgICAgcHJpbnRmKCIqKHB0cislZCkg5oyH5ZCR5a2X5LiyICVzXG4iLCBuLCAqKHB0ciArIG4pKTsKICAgICAgICBmb3IgKG0gPSAwOyAqKCoocHRyICsgbikgKyBtKSAhPSAnXDAnOyBtKyspIHsKICAgICAgICAgICAgcHJpbnRmKCIqKCoocHRyKyVkKSslZCkgPSAlYyBcbiIsIG4sIG0sICooKihwdHIgKyBuKSArIG0pKTsKICAgICAgICB9CgogICAgfQogICAgcmV0dXJuIDA7Cn0K