procedure TForm1.Button1Click(Sender: TObject);
var arrChar: array[0..255] of Char; 
begin
StrPCopy(arrChar, 'Come on, baby!');////////
ShowMessage(arrChar);
arrChar := 'aabbddddd';////
ShowMessage(arrChar);
end;
第一种字符串复制到字符数组中,和第二种直接赋值有何区别?

解决方案 »

  1.   

    都是复制内存,对本例来讲,arrChar := 'aaaaa';效率更高直接用MOV或REP MOVSB/SW/SD 完成了
    StrPCopy(arrChar, 'Come on, baby!');
    这个是调用函数,最后用Move函数完成,虽然最终是REP MOVSD/MOVSB完成,但是前面的判断指令太多了,效率上没后者快
      

  2.   

    对于字符容量足够的时候, 2者没多大区别, 但是你试试把arrchar的长度缩小到1个的时候, 你就知道strpcopy是不安全的了