hdgclfd 2020-03-15 10:51 采纳率: 0%
浏览 182
已采纳

赋值前10个字节,第17、18字节会变动

图片说明

只赋值了前10个字节,第17、18字节为什么会变动,异常;
memset后,未赋值时,执行输出全是0,正常;求高手解答

  • 写回答

4条回答 默认 最新

  • niualiang 2020-03-15 12:13
    关注

    1)pChar是一个字符型的指针变量,其值为字符(或字串首字符)在内存中的地址,你在

    char *pChar=new char[20];
    

    pChar="123456.789";
    

    两处赋给了其两个完全不同的地址,所以打印出来的第17、18字节已经不在new出来的20个字节中了。

                 v 预期第17、18字节位置               v 实际打印位置
    +---------------------------------------------------------+
     | 0x00|...                               |'1' '2' ... '9' ...                     |
    +---------------------------------------------------------+
    ^ new char[20] 得到的地址  ^"123456.789"字串所在地址     
    

    2)字符串是不可通过 "char指针变量 = 字符串"的方式赋值的,应该使用strcpy、strncpy等库函数。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?