打印

C语言一道面试题

[复制链接]
42842|251
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wxj1952|  楼主 | 2008-3-20 08:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  
现有2个类型完全一样的数组A、B,(例如 int a[10],b[10];) 用C/C51如何实现数组A、B之间的整体拷贝(赋值)?即应用下面形式:
        
                A=B ;


相关帖子

沙发
孤星119| | 2008-3-20 08:53 | 只看该作者

....

for(i=0;i<10;i++)
a=b;

使用特权

评论回复
板凳
wxj1952|  楼主 | 2008-3-20 09:30 | 只看该作者

数组是对象吗?

注:这是一道公司招聘时用来百里挑一的压轴题!

注释:是“整体”赋值,而不是按字节处理。


所有人几乎都是按2楼这样做的。那怎么体现我与众不同?如何与人竞争?

使用特权

评论回复
地板
孤星119| | 2008-3-20 09:38 | 只看该作者

那就用指针啊.还有这么多学问啊.学习

使用特权

评论回复
5
computer00| | 2008-3-20 09:40 | 只看该作者

搞到最后,不是内存复制就是2楼那样的。何苦呢?

使用特权

评论回复
6
xwj| | 2008-3-20 09:56 | 只看该作者

LZ,什么叫“整体”赋值???

不管怎样,还不都得由一堆语句分开完成?

使用特权

评论回复
7
tang.sc| | 2008-3-20 09:57 | 只看该作者

用c库来提高效率啊

memcpy(a, b, (sizeof(a)<sizeof(b) ? sizeof(a), sizeof(b));
充分利用指针,同事要考虑避免隐形的缓冲器溢出

使用特权

评论回复
8
HWM| | 2008-3-20 10:06 | 只看该作者

压轴题?用C++就行(对象的复制),C没法实现。

关于对象的复制(C++的基本功能)

class class_A
{
    ....
    public:
    ....
    class_A(class_A & A);
    operator = ( class_A & A );
    ...
};

class_A::class_A(class_A & A)
{
   ...
}

class_A::operator=(class_A & A)
{
   ...
}

int main( void )
{
  class_A A1; // or class_A A1, A2;
  ...
  class_A A2 = A1; // or A2=A1;
  ...
  while ( 1 )
  {
  }
}

使用特权

评论回复
9
wxj1952|  楼主 | 2008-3-20 11:29 | 只看该作者

什么叫“整体”?什么叫“对象”?

A、B 算不算“对象”?C是处理对象的,
      对象A=对象B;

应该没什么疑问。

无论A、B前面有多少修饰,但是要求用一行语句(一个“;”)完成,或者说一个赋值“=”完成。

使用特权

评论回复
10
HWM| | 2008-3-20 11:34 | 只看该作者

C是处理对象的?你的老师说的?

不管对象不对象,最终还的“一个一个”的送。对象只是把这个过程包装了起来。

使用特权

评论回复
11
孤星119| | 2008-3-20 11:47 | 只看该作者

赞同楼上.C是处理过程的.

使用特权

评论回复
12
xwj| | 2008-3-20 11:53 | 只看该作者

哎,又是wxj1952 ...

使用特权

评论回复
13
5_0_5| | 2008-3-20 12:11 | 只看该作者

楼主的房子便宜,俺占一层

使用特权

评论回复
14
wxj1952|  楼主 | 2008-3-20 12:22 | 只看该作者

向各位学到很多理论知识。

“C是处理过程的.”我还真没细想过。
那么理论上什么叫对象?C 是面向什么的?汇编呢?多给我们讲讲课。在这里听一堂课获益匪浅。

不过,面试的时候,总不能说“考官,你的题目概念不清。”我的目的是要让考官点头录取。而不是被淘汰。

“最终还的“一个一个”的送。”概念清楚。

C 不是汇编!一个一个字节的送?还是一个一个对象的送?

使用特权

评论回复
15
sz_kd| | 2008-3-20 12:25 | 只看该作者

LZ的奇题真多

使用特权

评论回复
16
HWM| | 2008-3-20 12:27 | 只看该作者

不想被淘汰就赶紧学习。

使用特权

评论回复
17
wxj1952|  楼主 | 2008-3-20 13:23 | 只看该作者

HWM 果然厉害

你的老师没教过你用C语言怎么实现包装? 

人和人就差那么一点。不是做不到,而是想不到。

那位优胜者是用C51实现的。就他一个人想到了?我自愧不如。甘愿被淘汰。
他写的形式是:

  ( ... )A = (... )B;

不知HWM 的“C无法实现”的论断,有何感想?

使用特权

评论回复
18
dld2| | 2008-3-20 13:31 | 只看该作者

看楼主的东西总觉得身在云里雾里

晕!

使用特权

评论回复
19
HWM| | 2008-3-20 13:51 | 只看该作者

to 17楼:也许我自觉老了,现在的C都发展成这样了,惭愧啊

看样子是要接受再教育了。

    闭目
    养神
    念经


另外我读书的时候,老师教的是PASCAL,C/C++是自学的。不能怪我的老师啊,但愿我的学生别怪我,呵呵。

使用特权

评论回复
20
MicroMMU| | 2008-3-20 14:01 | 只看该作者

定义一个结构体。

typedef
{
  int a[10];
}AB

main()
{
*(AA*)b=*(AA*)a;
while(1);
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

757

帖子

1

粉丝