CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

清华同方的两个面试题,请高手相助!

楼主yanhailiangyhl(编程浪子)2005-09-21 12:21:17 在 C/C++ / C++ 语言 提问

1.delete[]arr和deletearr[x]之间的区别?  
  2.假如有一个函数有1000多个return语句,如果想在程序进入这个函数和退出这个函数时,都弹出一个对话框,如何用简便的方法实现这个功能?不能在每个return   之前都加一个弹出对话框的函数? 问题点数:30、回复次数:24Top

1 楼qfeng_zhao(鱼儿鱼儿满天飞)回复于 2005-09-21 12:28:48 得分 5

1。  
    char   *arr   =   new   [size];  
    delete   []   arr;   //用于数组  
   
    char   *arr[10];  
    for(int   i=0;   i<10;   i++){  
            arr[i]   =   new   char;  
    for(int   i=0;   i<10;   i++){  
            delete   arr[i];       //用于单个元素  
  }  
  Top

2 楼sankt(宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒.)回复于 2005-09-21 12:32:10 得分 0

upTop

3 楼qfeng_zhao(鱼儿鱼儿满天飞)回复于 2005-09-21 12:32:40 得分 0

真够bt  
  修改下程序结构,return   都改为break好了  
  void   fun()  
  {  
    //弹出对话框  
    for(int   i=0;   i<1;   i++){  
   
        原来的程序;return   都改为break;  
  }  
  弹出对话框  
  }Top

4 楼xlsue(小林)回复于 2005-09-21 12:41:03 得分 10

写个类,在类的destructor弹出一个对话框。在函数里声明为局部对象。Top

5 楼yanhailiangyhl(编程浪子)回复于 2005-09-21 12:46:20 得分 0

to   天天向上:你的第一个问题我觉得有道理!  
  可是第2个,我觉得这样大的改动还不如每个return前加一句好!  
  比如原来的函数是好的!只是为测试,这样的大改动就不方便!  
  我也想到了在函数外部实现的方面即:  
  弹出对话框;  
  fun();//原来的函数  
  弹出对话框;  
  这样就是在原来函数外实现的!不是这个函数自己的功能;那天面试没有问清楚是不是必须在函数内实现!Top

6 楼xiaocai0001(高楼目尽欲黄昏/梧桐叶上萧萧雨)回复于 2005-09-21 12:50:54 得分 0

把return   都换成goto  
  跳到一个指定   点  
  在这个指定点处加一个对话框和return语句Top

7 楼yanhailiangyhl(编程浪子)回复于 2005-09-21 12:53:26 得分 0

to     xlsue(加勒彼海盗):能不能写一下具体实现的伪代码?Top

8 楼xlsue(小林)回复于 2005-09-21 13:07:47 得分 0

编译器会在每个return   之前插入局部对象的destructor.即使是异常而导致stack   unwinding,对象的destructor也会被调用。。。Top

9 楼yanhailiangyhl(编程浪子)回复于 2005-09-21 13:21:35 得分 0

to加勒比:我明白了!谢谢!我试试给你加分!Top

10 楼yanhailiangyhl(编程浪子)回复于 2005-09-21 13:31:52 得分 0

关于这两个问题,谁还有别的见解,都可以拿出来看看!有道理的都给分!Top

11 楼qybao(阿宝)回复于 2005-09-21 13:37:26 得分 0

其实第二题需要那么复杂吗?在调用函数前和调用函数后分别弹出对话框不就可以了吗?  
  Top

12 楼K()回复于 2005-09-21 13:55:01 得分 0

int   msgn;  
  msgn=fun(...);  
  switch(msgn)  
  {  
  case   ...:  
          break;  
  ...  
  };Top

13 楼pappGG(天天向上)回复于 2005-09-21 14:16:37 得分 0

第二题:  
   
  假设函数返回值为int  
  #define   MBOX_RETURN(msg,retvalue)   AfxMessageBox(msg);return   returnvalue  
   
  函数里用MBOX_RETURN("message",0)代替return   0Top

14 楼pappGG(天天向上)回复于 2005-09-21 14:17:25 得分 0

是  
  #define   MBOX_RETURN(msg,retvalue)   AfxMessageBox(msg);return   retvalueTop

15 楼pappGG(天天向上)回复于 2005-09-21 14:21:10 得分 0

麻烦,还是用goto吧Top

16 楼xdop(鸿飞处)回复于 2005-09-21 14:54:54 得分 2

1、数组和元素,不说了  
  2、函数第一行加上弹出对话框语句,这个至少先对了一半吧  
  关键是退出时——  
  如果是Java,我就用  
  try{  
        {原来的函数体}  
  }catch{}  
  finally{  
        弹出对话框;               //   总会被执行  
  }  
  C++也有类似的代码块吧Top

17 楼samelie(偶)回复于 2005-09-21 14:58:42 得分 0

goto   和break不好,这样没有原来的返回值。Top

18 楼sinall()回复于 2005-09-21 15:08:03 得分 0

2、  
  1)定义嵌套类  
  2)用局部类变量的构造和析构来做。Top

19 楼sinall()回复于 2005-09-21 15:09:34 得分 3

改正,^_^,没有试过,你可以自己试试。  
  2、  
  1)定义局部类  
  2)用局部类变量的构造和析构来做。  
  Top

20 楼SeaWave(NoSound)回复于 2005-09-21 15:11:13 得分 5

class   XXX   {  
  public:  
      ~XXX()   {   MessageBox(...);   }  
  };  
  ...  
  ...  
  void   YYY(....)   {  
          XXX   x;  
          ...  
          ...  
          ...  
          ...  
  }Top

21 楼pappGG(天天向上)回复于 2005-09-21 15:45:47 得分 5

恩……想到一个更麻烦的  
   
  class   ReturnException  
  {  
  public:  
  CString   msg;  
  int   iret;  
  };  
   
  int   fun()  
  {  
  ReturnException   e;  
  try  
  {  
  //...............  
  //需要返回的时候  
  e.iret   =   0;  
  e.msg   =   "message";  
  throw   e;  
   
  }  
  catch(ReturnException   e)  
  {  
  AfxMessageBox(e.msg);  
  return   e.iret;  
  }  
  }Top

22 楼yanhailiangyhl(编程浪子)回复于 2005-09-21 16:05:27 得分 0

谢谢各位!Top

23 楼ming6()回复于 2005-09-22 09:31:53 得分 0

这个最简单吧  
  c++用结构化异常可以做  
  MyFun()  
  {  
  __try{  
   
  }  
  __finally{  
  AfxMessageBox("quit");  
  }  
   
  }Top

24 楼ming6()回复于 2005-09-22 09:34:39 得分 0

MyFun()  
  {  
  __try{  
  ...//所有的函数代码在这里  
   
  }  
  __finally{  
  AfxMessageBox("quit");  
  }  
   
  }  
  不管__try中如何退出  
  __finally都将被调用Top

相关问题

  • 清华同方还是东大阿尔派?这是一个问题!
  • 我想告清华同方
  • 面试问题?
  • IBM面试题!
  • 面试题目……
  • 面试题
  • 面试问题?
  • 面试题??
  • 面试题
  • 面试题

关键词

  • 函数
  • arr
  • 对话框
  • 弹出
  • delete
  • char

得分解答快速导航

  • 帖主:yanhailiangyhl
  • qfeng_zhao
  • xlsue
  • xdop
  • sinall
  • SeaWave
  • pappGG

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo