[C指针]双重指针:指向 指针变量 的 指针变量

双重指针
#include 

int main()
{
    printf("---- const char* pi = \"hi\"; ----\n");
    const char* pi = "hi";
    printf("pi use %%s: %s \n", pi);
    printf("pi use %%p: 0x:%p\n", pi);

    printf("\n");
    const char* ci[] = { "hello","world","good","day" };
    const char** welcome[2];

    welcome[0] = &ci[2];
    pi = ci[2];

    printf("---- pi = ci[2]; ----\n");
    printf("*welcome[0] use %%s : %s\n", *welcome[0]);
    printf("*welcome[0] use %%p : 0x%p\n", *welcome[0]);
    printf("ci[2] use %%s : %s\n", ci[2]);
    printf("ci[2] use %%p : 0x%p\n", ci[2]);
    printf("pi use %%s : %s\n", pi);
    printf("pi use %%p : 0x%p\n", pi);

    return 0;
}
  • const char* ci[ ] 意味着 ci[0]ci[1]ci[2]ci[3] 都是指针变量,都是指向字符变量的指针变量;
  • const char** welcome[ ],意味着 welcome[0]welcome[1] 都是指针变量,都是指向 指针变量 的指针变量;

怎么给 welcome[0] 赋值呢?

  • 找到一个指针变量,比如 ci[2]
  • 算出这个指针变量本身在内存的地址,用 &ci[2]
  • 把这个内存地址赋值给 welcome[0]

参考资料

  • [C指针]&pi pi *pi
    https://www.jianshu.com/p/1e05611fb60c

你可能感兴趣的:([C指针]双重指针:指向 指针变量 的 指针变量)