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);

    }

  • 相关阅读:
    解决"waitForCondition(LockCondition) timed out (identity=23, status=0). CPU may be pegged. trying again."问题
    解决:“MediaPlayer error (1, -2147483648)”问题
    EasyUI 验证
    ANT简明教程[转载]
    [转]Android开源框架ImageLoader的完美例子
    [转]Android精品开源项目整理
    【转】25个非常实用的jQuery/CSS3应用组件
    [转]8款实用的jQuery/CSS3最新插件应用
    解决IE6下浮层遮盖select刺穿的问题
    jQuery AJAX中文乱码处理
  • 原文地址:https://www.cnblogs.com/heruonan/p/8426013.html
Copyright © 2011-2022 走看看