【发布时间】:2017-08-15 03:29:27
【问题描述】:
我正在使用 Atmel Studio 用 C 语言进行编程(对于那些不熟悉它的人,它用于对 arduino 等微控制器进行编程。您不能简单地打印,您必须将数据串行发送到终端等应用程序。)
到目前为止:
uint8_t * stackHolder;
char buffer[128];
stackHolder = &buffer[127];
假设buffer[127] 的地址恰好是0x207。我可以看到stackHolder 的值是0x207 使用调试器。我有一个函数,它接受 char * 并打印它。所以我的问题是如何将uint8_t * stackHolder 转换为char * 以便将其传递给我的打印函数?
【问题讨论】:
-
C 不支持方法。确定你不使用 C++?还有为什么要转换指针?
-
类型之间的转换是强制转换的目的。
-
也许您需要将那些有符号和无符号的
char类型转换为int以获得完整的范围。 -
缓冲区中有什么? ASCII 字符?如果是这样,请消除 uint8_t 指针,只为 stackHolder 使用 char 指针。
-
澄清一下,我的任务是编写一个移动堆栈指针位置的程序(我相信用于上下文切换)。我的微控制器中的堆栈指针由 2 个 uint8_t 寄存器组成。我只是想:a:获取它指向的地址并打印它,b:打印实际存储在该地址的内容。每当我施放它时,它不会打印任何东西,所以我认为它不能正常工作。我假设我的缓冲区充满了 0,因为我认为如果你不给出值,这就是 C 初始化它们的方式
标签: c casting char type-conversion uint8t