【发布时间】:2020-08-14 13:05:39
【问题描述】:
如何将void *指针转换为char *,以便我可以以十六进制格式打印存储在ptr中的地址?没有printf()。
#include<stdio.h>
int main()
{
int a=5;
void *ptr=&a;
char *arr=(char*)ptr;
write(1,arr,strlen(arr));
return 0;
}
【问题讨论】:
-
您认为为什么需要将其转换为打印?也就是说,您的问题真的是“如何打印指针值”还是确实是“如何将 void * 转换为 char *”? “不打印”是什么意思?
-
对不起,我想我明白你的意思了。
char *是指将指针值转换为字符串吗? -
你的问题不是很清楚。无论如何,要以十六进制打印任何内容,您不需要
write,它只写入原始字节,但您需要printf。我认为在您的情况下,您只需要printf("%p\n", &a)打印变量a的地址。 -
@Jabberwocky 出于某种原因,OP 希望它“不打印”。我猜这意味着 OP 想要手动将指针转换为字符串表示形式。
-
@Nurdaulet_mit22 计算机不存储十六进制数字。他们只是存储数字。这些数字可以用十进制、十六进制、八进制等表示。您可能应该回到基础。
标签: c pointers memory-address