从固定的Flash位置访问C字符串

时间:2010-12-10 23:18:10

标签: c string

我在0xAABB位置定义了一个字符串:

const char str[] = "Hi There";  
const word _Str1 @0xAABB = (word)str;

现在,我想访问位于0xAABB的这个字符串。 这是什么C语法?

2 个答案:

答案 0 :(得分:0)

<德尔> 只需使用指向内存位置的指针:     const char * str =(const char *)0xAABB;

编辑(根据您的评论)您需要先从地址0xAABB获取地址,然后将此值用作字符串的地址:

const char *str = *(const char **)0xAABB;

这将取消引用0xAABB处的指针以获取实际的字符串地址。

答案 1 :(得分:0)

#define ADDRESS_OF_YOUR_STRING  ((const char *)0xAABB)

const char *pointer_to_your_string = (const char *)0xAABB;

我本可以在指针定义中使用宏,但这些实际上是为了单独演示如何执行此操作。如果将宏版本放在头文件中并在代码中使用它,编译器将能够更好地优化。如果您使用全局指针变量来访问它,那么您可能最终需要编译器需要额外加载指针。

使用这两个是相同的:

printf("%s\n", ADDRESS_OF_YOUR_STRING);

应该可以正常工作,因为printf需要一个指向%s字符串的指针。