To gigi2000: 如果还有什么困惑可以继续提出来,大家帮你解答。
To keboy, netsong: Thanks for your appreciation. :) I often check my mailbox @sina.com, so write to me if you need help. My pleasure. :)
char, array of char, PChar都是简单类型,简单类型当然通用性好,这个很容易理解,只要保证内存布局一样就可以了,在这个前提下如果有必要可以采取手段欺骗编译器的强类型检查。Delphi为什么提出string类型?肯定有它的道理。什么道理?用C的同志们都知道处理什么类型都没有处理字串类型费劲,Delphi作为如此优秀的RAD工具自然要想办法解决这个问题。事实上,如果你能充分的理解string,你就会赞叹Delphi的精妙了。
处理字串时候最恼人的问题之一就是内存的分配与释放,如果你用char数组(array [0..l] of char等同于C中的char[l+1]),则内存被静态分配,这种情况主要用在定宽字符串中。但是对于最常见的变长字串可就费劲了。string解决这个问题的手段是,由编译器通过引用计数和长度信息自动维护字串内存区域。事实上,当把一个string类型的变量当成字符指针看的时候,他的内存布局是这样的: