Re: Re: Re: Re[2]: [cpp] cloudwu大哥,请解释一下网易互动笔试题目的意义所在&# 8230;&# 8230;

Chen Shuo giantchen at gmail.com
Thu Mar 23 16:15:25 CST 2006


"数组又怎么会无法引用" ?!

C++是可以引用数组的。

On 3/23/06, 小陈 <iamchenxin at 163.com> wrote:
>
>
>
>
>
>
> ________________________________
>
> -----原始邮件-----
> 发件人:"evilangel"
> 发送时间:2006-03-23 11:19:38
>
> 收件人:"C++ Discuss Group"
> 抄送:(无)
> 主题:Re: Re: Re[2]: [cpp] cloudwu大哥,请解释一下网易互动笔试题目的意义所在&# 8230;&# 8230;
>
>
>
>
>
>
>  小陈,您好!

 不是很多书认为buf的实际意义是一个指针, 而是在 C 标准中, 函数参数中的数组都会被认为是指针.

> 这么规定是为了避免对数组的内容进行拷贝, 是出于效率上的原因.


> 对于这个问题, MS 上有句大胆的这个话"The sizeof operator
> yields the size of its operand with respect to the size of type char."
> 主要是一直以来使用vs集成的msdn用惯了,也就始终偷懒没有去下c++ standard .
> 不知道是MS独家还是真的是标准。
>
>关于sizeof,有个地方还需要注意一下。
>
>对于数组来说,sizeof并不一定总是返回数组大小。
>
>比如
> fuc(int buf[5]){sizeof(buf);}
> sizeof(buf)=4
>
>很多书认为产生这种情况是因为buf的实际意义是一个指针(虽然实际上是个指针,buf产生了地址),所以要按指针的规则来计算。
>
>但是从编译器角度看有相同转化的情况下
> fuc(short&
> buf){sizeof(buf);}sizeof(buf)=2,这里尽管buf也被强迫的产生了地址,但是sizeof(buf)的大小还是按照buf引用的类型来计算的。
>
>所以我觉得fuc(int
> buf[5]){sizeof(buf);} sizeof(buf)=4 大概是为了给类似int
> buf[]的声明给一个交代。大致上buf[5]和buf[]在所有情况下保持一致性,总比buf[]有一个独一无二的规则来的好?

>其实我觉得发这篇讨论的人挺可怜的,给人骂惨了。其实说不定他真是笔试的时候一时恍惚,然后就被这题给刷下来了,心里不服气也是很正常。恍惚也是常有的,象回帖子的人里不也有恍惚了把int
> buf[]="aaa" sizeof(buf)当指针看的么?



        致
礼!
>

        evilangel
        evilangel2000 at 163.com
          2006-03-23

_______________________________________________
Cpp
> mailing
> list
Cpp at codingnow.com
http://codingnow.com/mailman/listinfo/cpp
>
>
>
> 呵呵,可能是我钻牛角尖了,不过我还是觉得这是由于实质上 由于为了保持 int buf[] 和 int buf[5]
> 在sizeof下面保持的一致性才产生的结果。毕竟对于参数的int buf[] sizeof
> 在编译时是无法求值的(按照c++的单独编译模型无法求值)。其实在这里也是体现了语言的现实性,不然数组又怎么会无法引用?
> 如果不考虑编译器的局限性的话,我想c++ standard 未必会真的把参数 int buf[5] 给当成 指针,毕竟 参数 int buf[5]
> 在函数传值才是真的符合语义。如同其他类型一样,传入类型本身代表传值,不传值的话就要求程序员手动传入引用或者指针。
> C和C++的口号向来是 要相信程序员,相信程序员明白自己在做什么。  说白了现在这样的规定是 由于 c++使用的单独编译模型的局限性造成的。 不然C++
> 会不相信程序员要传入 int buf[5],是想进行传值, 会不相信程序员不知道不传值需要自己手动传指针和引用?按理说
>  int buf[5] 传值才是符合语言规范的。毕竟连class A{int buf[2222];};;
> 这种当参数传入时都是传值进入的。说是为了效率只是一厢情愿的借口。
>
>
>
>
>
>
>
>
>
> 你 知 道 2006 年 最 火 爆 的 电 子 邮 箱 吗 ?
> 多 达 1.1 亿 中 国 人 选 择 网 易 2000 兆 免 费 邮 箱 , 抢 注 再 得 280 兆 超 大 网 盘
> _______________________________________________
> Cpp mailing list
> Cpp at codingnow.com
> http://codingnow.com/mailman/listinfo/cpp
>
>



More information about the Cpp mailing list