首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

面试的两个题目,不知道如何答

2012-03-09 
面试的两个题目,不知道怎么答。1、这个程序实现什么功能??voidfoo(char*a,char*b,intlen){switch(len&0x7){d

面试的两个题目,不知道怎么答。
1、这个程序实现什么功能??  
void   foo(char   *a,   char   *b,   int   len)
{
  switch(len   &0x7){
    default:
        while(len> 7){
            len-=8;   *b++   =   *a++;
          }
    case7:   *b++   =   *a++;
    case6:   *b++   =   *a++;
    case5:   *b++   =   *a++;
    case4:   *b++   =   *a++;
    case3:   *b++   =   *a++;
    case2:   *b++   =   *a++;
    case1:   *b++   =   *a++;
  }
}

2、指出这个程序有什么错误
void   doubleArray(string   *&array,   int   size)
{
  const   string   *old   =   array;
  array   =   new   string[2*size];
  memcpy(array,   old,   size*sizeof(string));
  del[]   old;
  size*=2;
}


[解决办法]
关于第一个问题:
(1)default能够放到case的前面吗?我没有试过,但是没有必要耍这种没有意义的伎俩。
(2)看不出是什么功能,应该有人知道的。等待高手。


关于第二个题:
(1)const string *old = array; const指针不能指向非const对象。
(2)del[] old; old和array指向同一块内存,这样会删除array的内存,如果要用的话,这个语句应该放到new的前面去。
(3)memcpy(array, old, size*sizeof(string));的使用,第三个参数应该是从源串中读取的字符个数,而不是大小。
由于不知道这个题目的目的是什么,所以不好修改。
小弟的个人见解,应该还有其他地方有错误吧。

热点排行