CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

面试问题

楼主LeonOrient666()2005-03-31 20:11:41 在 C/C++ / C++ 语言 提问

1.指针和数组有什么区别,这能谈到什么区别?  
  2.Override和Overload的区别  
  各位知道怎么答吗? 问题点数:100、回复次数:16Top

1 楼kobefly(科比--网络学习中)回复于 2005-03-31 20:16:50 得分 30

重写Overriding是父类与子类之间多态性的一种表现,  
  重载Overloading是一个类中多态性的一种表现。  
  如果在子类中定义某方法与其父类有相同的名称和参数,  
  我们说该方法被重写   (Overriding)。  
  子类的对象使用这个方法时,将调用子类中的定义,对它而言,  
  父类中的定义如同被“屏蔽”了。  
  如果在一个类中定义了多个同名的方法,  
  它们或有不同的参数个数或有不同的参数类型,  
  则称为方法的重载(Overloading)。  
  Overloaded的方法是可以改变返回值的类型。  
   
  Top

2 楼kobefly(科比--网络学习中)回复于 2005-03-31 20:19:23 得分 30

指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。  
   
    2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。  
   
    3、当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。    
   
    问题:指针与数组  
   
    听说char   a[]与char   *a是一致的,是不是这样呢?  
   
    答案与分析:  
   
    指针和数组存在着一些本质的区别。当然,在某种情况下,比如数组作为函数的参数进行传递时,由于该数组自动退化为同类型的指针,所以在函数内部,作为函数参数传递进来的指针与数组确实具有一定的一致性,但这只是一种比较特殊的情况而已,在本质上,两者是有区别的。请看以下的例子:  
   
  char   a[]   =   "Hi,   pig!";  
  char   *p   =   "Hi,   pig!";    
   
    上述两个变量的内存布局分别如下:  
   
    数组a需要在内存中占用8个字节的空间,这段内存区通过名字a来标志。指针p则需要4个字节的空间来存放地址,这4个字节用名字p来标志。其中存放的地址几乎可以指向任何地方,也可以哪里都不指,即空指针。目前这个p指向某地连续的8个字节,即字符串“Hi,   pig!”。  
   
    另外,例如:对于a[2]和p[2],二者都返回字符‘i’,但是编译器产生的执行代码却不一样。对于a[2],执行代码是从a的位置开始,向后移   动2两个字节,然后取出其中的字符。对于p[2],执行代码是从p的位置取出一个地址,在其上加2,然后取出对应内存中的字符。  
  Top

3 楼csumallsme(侃刀)回复于 2005-03-31 20:42:56 得分 5

很详细了Top

4 楼CMyMfc(星际人生:=E.F=FlyForEver)回复于 2005-03-31 21:20:35 得分 5

顶Top

5 楼kobefly(科比--网络学习中)回复于 2005-03-31 21:22:03 得分 0

建议结贴  
  哈哈Top

6 楼CMyMfc(星际人生:=E.F=FlyForEver)回复于 2005-03-31 21:24:30 得分 0

支持揭帖Top

7 楼sankt(宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒.)回复于 2005-03-31 22:29:35 得分 0

好贴  
  Top

8 楼pcboyxhy(-273.15℃)回复于 2005-03-31 22:31:23 得分 0

没话说了Top

9 楼wshcdr(dd)回复于 2005-03-31 22:35:48 得分 0

科比强人啊Top

10 楼MagicCarmack(MagiC++)回复于 2005-04-01 07:35:51 得分 0

回复人:   kobefly(科比---开始学习c++!)    
   
  太猛了  
  Top

11 楼zengwujun(月之海 为linux入门奋斗100天)回复于 2005-04-01 08:16:49 得分 0

markTop

12 楼YFY(天易)回复于 2005-04-01 08:31:58 得分 10

 
  1.   指针动态申请的内存要自己释放,数组不用管;  
  2.   指针申请内存在堆上,大小限制受操作系统限制;  
        数组不行,数组受编译环境的栈大小限制,默认不可以定义一个几十M大小的内存块;  
  Top

13 楼skywgs(浪迹天涯)回复于 2005-04-01 08:33:04 得分 10

kobefly(科比---开始学习c++!)   都回答完了,我们没机会了!Top

14 楼sharkabc(shark)回复于 2005-04-01 10:25:14 得分 10

指针动态申请的内存要自己释放,数组不用管;  
  ???不解?  
  delete   []arrayname;不是释放内存吗?Top

15 楼LeonOrient666()回复于 2005-04-05 19:26:05 得分 0

谢谢大家  
  不好意思,这几天有点事情没上网  
  我现揭帖了  
  Top

16 楼hanyaocsdn()回复于 2005-04-14 09:03:58 得分 0

markTop

相关问题

  • 面试
  • 如此面试
  • 面试问题?
  • IBM面试题!
  • 面试题目……
  • 面试题
  • 后天面试
  • 面试问题?
  • 面试题??
  • 华为面试?

关键词

  • c++
  • 指针
  • 内存
  • 函数
  • 字符
  • 代码
  • 执行
  • 数组
  • 子类
  • 参数

得分解答快速导航

  • 帖主:LeonOrient666
  • kobefly
  • kobefly
  • csumallsme
  • CMyMfc
  • YFY
  • skywgs
  • sharkabc

相关链接

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

广告也精彩

反馈

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