C语言: Convert Pointer to String,我要返回什么?

标签 c pointers

我只是在试验一些使用 c 的系统级编程。 我遇到了一些模棱两可的事情,我希望这里有人能帮我解决。

如果我创建一个 char*,然后按以下方式将地址提供给一个函数

char* string;
os_IntToString(&string, string);

void os_IntToString(int value, char* str) {
    int scancode_offset = 48;

    char* start = *str;
    do{
        int piece = value % 10;
        *str++ = piece + scancode_offset;
        value = value / 10;
    } while(value);
    *str-- = '\0';
}

那我到底得到了什么? 我得到的是实数,例如 589796。显然地址是向后的,但它是什么基本系统?

内存地址是十六进制的吧?但是函数使用 Int 是十进制基数 10? 那是对的吗?是否发生了转换过程,或者我现在是否有十进制地址,我只是不知道。

谁能解决这个问题。非常感谢。

最佳答案

就C 语言而言,地址不是“十六进制”的,也不是数字。地址只是地址或指针值。根据您使用的系统的寻址方案,地址可能以十六进制表示(例如,如果使用 printf"%p"打印 格式)。您还可以将地址转换为整数,但转换的结果是实现定义的——而且整数也不是“十六进制”的,尽管您可以生成人类可读的整数的十六进制表示形式。 (整数用二进制表示。)

至于您的函数,您已经用 void 返回类型定义了它,然后试图从它返回一个 char* 值。如果不是 fatal error ,您应该至少得到编译器的警告。

关于C语言: Convert Pointer to String,我要返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17324068/

相关文章:

linux - 绘制鼠标指针的 XOrg 服务器代码

c - 这是一个空指针吗?铸件?它在做什么?

c - WFP 标注和 NDIS LWF 不能位于同一驱动程序二进制文件中

java - 带有绘制二维数组列表的空指针异常Java

c - 从用户定义的函数访问值

c++ - 调试 "malloc error: pointer being freed was not allocated",使用 gdb

c - 在 Windows 控制台中更新一行

c - 这个C程序的逻辑错误在哪里?

c - 简单程序的内存泄漏,我怎样才能释放分配?

c - & 运算符不能应用于 C 中的常量