双重指针
#include <stdio.h>
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]
参考资料
网友评论