c中指针取消引用的值的差异

discrepancies in the values of a pointer dereference in c

char a = 'x';
char *b = &a;
char *c = &b;


printf("%p\n", c);   //outputs 0060FF04
printf("%p\n", &b);  //outputs 0060FF04
printf("%p\n", *c);  //outputs 0000000B
printf("%p\n", *&b); //outputs 0060FF0B
printf("%p\n", &a);  //outputs 0060FF0B

所以基本上,指针的概念对我来说是新的并且是 运行 一些测试以更好地理解它。无论如何,如您所见,第一个和第二个输出与我预期的相似。然而,取消引用 char c 输出 0000000B 而不是 a 的内存地址 0060FF0B。 所以我的问题是如果 c = &b 那么 *c != *&b 怎么来的?

c的类型应该是char **,而不是char *。该程序将 0x0060FF0B 解释为 1 字节字符,给出 0x0B。