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。
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。