[疑难] 请教char[]问题
oldrev
2008-10-27
D中的数组就是一个带长度的指针,其他的请参考 C,初始化的时候并不会分配堆空间。
如果你真需要操作字符串的话可以 new 一段堆空间出来,老实说我从来没遇过要修改字符串中的内容而不重新分配的情况。 |
|
my3world
2008-10-28
oldrev 写道
D中的数组就是一个带长度的指针,其他的请参考 C,初始化的时候并不会分配堆空间。
如果你真需要操作字符串的话可以 new 一段堆空间出来,老实说我从来没遇过要修改字符串中的内容而不重新分配的情况。
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";这句是出现段错误。
可能是操作系统的原因吧。 |