我正在尝试从 void 指针 B 获取变量 A 的值
将 void 指针转换为 char * 给我错误的不可读值
这是我的代码
#include <stdio.h>
int main()
{
char *A = "1020304050";
void *B = &A;
printf("%p -- %p -- %s -- %s", &A, B, A, (char *) B);
return 0;
}
这是我的结果:
0x7ffc2db2f820 -- 0x7ffc2db2f820 -- 1020304050 -- @
应该是
0x7ffc2db2f820 -- 0x7ffc2db2f820 -- 1020304050 -- 1020304050
最佳答案
在 printf
调用中,您将 B
的值转换为 char *
,但这不是您分配给它的值。您分配的 &A
类型为 char **
。
您需要将 A
分配给 B
:
void *B = A;
printf("%p -- %p -- %s -- %s", (void *)&A, (void *)B, A, (char *) B);
或者将 B
转换为 char **
并取消引用转换后的指针:
void *B = &A;
printf("%p -- %p -- %s -- %s", (void *)&A, (void *)B, A, *(char **)B);
关于C 另一个指针的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59323275/