保存指针的内存地址

hor*_*rro 4 c unix malloc pointers

我必须实现一个函数,当我分配它时返回指针的内存地址malloc().我知道malloc(value)在堆上分配一个大小的区域value.

我知道如何实现打印该指针的内存地址的代码:

    void *s = malloc (size)
    printf("%p\n",s);
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何将该代码打印的值保存在int或string中?我可以?如果这是一个愚蠢的问题,我很抱歉......

Roo*_*oke 7

将字符串的值(即某些变量的内存位置)存储在字符串中可以像使用printf一样完成:

char buf[128];
void *s = malloc (size);
sprintf(buf, "%p\n",s);
Run Code Online (Sandbox Code Playgroud)

要将值"保存"为整数(类型),您可以进行简单的转换:

void *s = malloc (size);
size_t int_value = (size_t)s;
Run Code Online (Sandbox Code Playgroud)

因为在c中你永远不知道你的机器地址指针长度是多少,所以这(技术上)不能保证工作正常; 对于古怪的架构或编译器来说,这两种方法都可能出错.