C 中指针取消引用的值存在差异


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

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

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

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

相关内容

  • 没有找到相关文章

最新更新