zoukankan      html  css  js  c++  java
  • c/c++面试题一

    1.找错

    void test1()

    {

    char string[10];

    char *str1="0123456789";

    strcpy(string,str1);

    }

    试题一字符串str1需要11个字节才能存放下(包括末尾的‘/0'),而string 

    只有10个字节的空间,strcpy会导致数组越界。

    void test2()

    {

    char string[10],str1[10];

    int i;

    for (i=0;i<10;i++)

    {

    str1[i]='a';

    }

    strcpy(string,str1);

    }

    对试题2,如果面试者指出字符数组str1不能在数组内结束,指出strcpy

    (string,str1)调用使得从str1内存起复制到string内存起所复制的字节数具有

    不确定性,库函数strcpy工作方式

    void test3(char *str1)

    {

    char string[10];

    if (strlen (str1)<=10)

    {

    strcpy(string,str1);

    }

    }

    if (strlen(str1<=10)

    {

    strcpy(string,str1);

    }

    }

    对试题3,if(strlen(str1)<=10)应改为if (strlen (str1)<10),因为strlen的结果

    未统计'/0'所占用的1个字节。

    解析:

    (1)字符串以’/0'结尾;

    (2)对数组越界把握的敏感度

    (3)库函数strcpy的工作方式,如果编写一个标准strcpy函数的总分值

    void strcpy(char *strDest,char *strSrc)

    {

    while ((*strDest++=*strSrc++!='/0');

    }

    void strcpy(char *strDest,const char *strSrc)

    //对源字符串加const,表明其为输入参数

    {

    while ((*strDest++=*strSrc++)!='/0');

    }

    void strcpy(char  *strDest,const char *  strSrc)

    {

    //对源地址和目的地址加非0断言

    assert((strDest!=NULL)&&(strSrc!=NULL));

    while ((*strDest++=*strSrc)!='/0');

    }

    //为了实现链式操作,将目的地址返回

    char *strcpy(char *strDest,const char *strSrc)

    {

    assert((strDest!=NULL)&&(strSrc!=NULL));

    char *address =strDest;

    while ((*strDest++=*strSrc++)!='/0');

    return address;

    }

    (4)对strlen的掌握,它没有包括字符串末尾的'/0'

    int  strlen(const char *str)//输入参数const

    {

    assert(str!=NULL);//断言字符串地址非0

    int len ;

    while ((*str++)!='/0')

    {

    len++;

    }

    return len;

    }

    试题4:

    void GetMemory(char *p)

    {

    p=(char*)malloc(100);

    }

  • 相关阅读:
    es6.8集群部署(ssl认证)+nfs备份(生产)
    spool
    dataguard unname
    zabbix监控mysql主从同步可用性
    企业微信发送消息
    安装ruby
    binlog2sql
    xtrabackup备份异地恢复+binlog日志应用
    5.7.29重新部署主从
    centos7 图形界面启动
  • 原文地址:https://www.cnblogs.com/heruonan/p/8426013.html
Copyright © 2011-2022 走看看