[疑难] 请教char[]问题

oldrev 2008-10-27
D中的数组就是一个带长度的指针,其他的请参考 C,初始化的时候并不会分配堆空间。
如果你真需要操作字符串的话可以 new 一段堆空间出来,老实说我从来没遇过要修改字符串中的内容而不重新分配的情况。
my3world 2008-10-28
oldrev 写道
D中的数组就是一个带长度的指针,其他的请参考 C,初始化的时候并不会分配堆空间。
如果你真需要操作字符串的话可以 new 一段堆空间出来,老实说我从来没遇过要修改字符串中的内容而不重新分配的情况。


我在windows下面测试过了。代码:

char[] s = "Hello";//H大写

writefln(s.ptr);

s = "hello";//小写h

writefln(s.ptr);

s[0] = "w";//小写w

writefln(s.ptr);

 

结果是第一行和第二行输出不同,第二行和第三行输出相同。

449080

449090

449090

在linux下运行到s[0] = "w";这句是出现段错误。

 

可能是操作系统的原因吧。

Global site tag (gtag.js) - Google Analytics