zoukankan      html  css  js  c++  java
  • C++面试题

    void test1()  

    {  

    char string[10];  

    char* str1 = "0123456789";  

    strcpy(string, str1);  

    解答:

    字符串str1需要11个字节才能存放下(包括末尾的’’),而string只有10个字节的空间,strcpy会导致数组越界;

    虽然编译器不报错,但是应该认识到这个错误

    strcpy 函数
     
    这是strcnp函数的原型
    char *strcpy(char *dest , const char *src );
    char *strncpy(char *dest , const char *src , size_t n );
    使用strcpy有个缺点:strcpy进行复制时,不进行数组越界的检查。
    string数组只有10个字节,但是"0123456789"却有11个字节,这是很明显的数组越界,但是编译器编译没有报错,也就是ctrcpy复制是不进行数组越界的检查。要避免这个问题,可以使用strncpy ,因为strncpy有参数n来限定复制的字节数。
     
    若不改变string[10],使用strbcopy(string,str1,10);编译显示
    将string[10]改为11,再添加strncopy(string,str1,11);编译显示

     

  • 相关阅读:
    Linux上统计文件夹下文件个数
    linux----tail 过滤日志文件中的关键字
    Linux----Makefile
    Python--day 3
    Python--day 2
    Python--day 1
    Ubuntu14.04 64位网易云播放器
    qt 串口通信学习的目录
    qt layout 注意要点
    模拟电子第一章半导体
  • 原文地址:https://www.cnblogs.com/qiwu1314/p/8462872.html
Copyright © 2011-2022 走看看