d语言以下代码module test_s_trans;import stdstdio;void main immutable char str = Hello world!; 在常量区中声明一个字符串 char ptr1 = castchar strptr; 将字符串的指针转换为 char if ptr1 = 0x10000 && ptr1 0x20000
这是因为在D语言中,指针不能直接和整数进行比较。需要使用cast将整数转换为指针类型,或者使用std.conv中的to函数进行转换。
修改代码如下:
module test_s_trans; import std.stdio;
void main() { immutable char[] str = "Hello, world!"; // 在常量区中声明一个字符串
char* ptr1 = cast(char*) str.ptr; // 将字符串的指针转换为 char*
if( ptr1 >= cast(char*)(0x10000) && ptr1 < cast(char*)(0x20000))
{
write("指向常量区域\n");
}
else
{
write("指向非常量区域\n");
}
}
这里使用了cast将整数转换为char*类型的指针,使得可以进行比较。
原文地址: http://www.cveoy.top/t/topic/fsBv 著作权归作者所有。请勿转载和采集!