char buf[20]; memcpy( buf, data_in, 20); 这个结果是对的,buf结果修改不用动到data_in 而如果第一行buf的定义改为: char *buf; 执行的结果就会同时修改到data_in,因为memcpy把data_in的地址给了buf的地址,所以会同时修改