快速业务通道

C++经典面试题

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29
不会传回

GetMemory并不能传递动态内存,Test函数中的 str一直都是 NULL。

strcpy(str, "hello world");将使程序崩溃。

修改如下:

char *GetMemory(){
 char *p=(char *)malloc(100);
 return p;
}
void Test(void){
 char *str=NULL;
 str=GetMemory(){
 strcpy(str,"hello world");
 printf(str);
}

方法二:void GetMemory2(char **p)变为二级指针.

void GetMemory2(char **p, int num)
{
*p = (char *)malloc(sizeof(char) * num);
}

--------------------------------------------------------------------------

35.程序改错

class mml
{
 private:
  static unsigned int x;
 public:
  mml(){ x++; }
  mml(static unsigned int &) {x++;}
  ~mml{x--;}
 pulic:
  virtual mon() {} = 0;
  static unsigned int mmc(){return x;}
  ......
};
class nnl:public mml
{
 private:
  static unsigned int y;
 public:
  nnl(){ x++; }
  nnl(static unsigned int &) {x++;}
  ~nnl{x--;}
 public:
  virtual mon() {};
   static unsigned int nnc(){return y;}
  ......
};

代码片断:

mml* pp = new nnl;
..........
delete pp;

A:

基类的析构函数应该为虚函数

virtual ~mml{x--;}

--------------------------------------------------------------------------

36.101个硬币100真、1假,真假区别在于重量。请用无砝码天平称两次给出真币重还是假币重的结论。

答:

101个先取出2堆,

33,33

第一次称,如果不相等,说明有一堆重或轻

那么把重的那堆拿下来,再放另外35个中的33

如果相等,说明假的重,如果不相等,新放上去的还是重的话,说明假的轻(不可能新放上去的轻)

第一次称,如果相等的话,这66个肯定都是真的,从这66个中取出35个来,与剩下的没称过的35个比

下面就不用说了

方法二:

第3题也可以拿A(50),B(50)比一下,一样的话拿剩下的一个和真的比一下。

如果不一样,就拿其中的一堆。比如A(50)再分成两堆25比一下,一样的话就在

B(50)中,不一样就在A(50)中,结合第一次的结果就知道了。

--------------------------------------------------------------------------

37.static变量和static 函数各有什么特点?

答:

static变量:在程序运行期内一直有效,如果定义在函数外,则在编译单元内可见,如果在函数内,在在定义的block内可见;

static函数:在编译单元内可见;

--------------------------------------------------------------------------

38.用C 写一个输入的整数,倒着输出整数的函数,要求用递归方法 ;

答:

void fun( int a )
{
printf( "%d", a%10 );
a /= 10;
if( a <=0 )return;
fun( a );
}

--------------------------------------------------------------------------

39.写出程序结果:

void Func(char str[100])
{
 printf("%dn", sizeof(str));
}

答:

4

分析:

指针长度

--------------------------------------------------------------------------

40.int id[sizeof(unsigned long)];

这个对吗?为什么??

答:

这个 sizeof是编译时运算符,编译时就确定了

可以看成和机器有关的常量。

本文主要包括二个部分,第一部分重点介绍在VC中,怎么样采用sizeof来求结构的大小,以及容易出现的问题,并给出解决问题的方法,第二部分总结出VC中sizeof的主要用法。

1、 sizeof应用在结构上的情况

请看下面的结构:

struct MyStruct
{
double dda1;
char dda;
int type
};

对结构MyStruct采用sizeof会出现什么结果呢?sizeof(MyStruct)为多少呢?也许你会这样求:

sizeof(MyStruct)=sizeof(double)+sizeof(char

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号