我在0xAABB位置定义了一个字符串:
const char str[] = "Hi There";
const word _Str1 @0xAABB = (word)str;
现在,我想访问位于0xAABB的这个字符串。 这是什么C语法?
答案 0 :(得分:0)
编辑(根据您的评论)您需要先从地址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
字符串的指针。