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

evilangel evilangel2000 at 163.com
Thu Mar 23 17:21:53 CST 2006


小陈,您好!

C为什么把数组参数当成指针的原因在
<< Expert C Programming >> 里面的 "Why C Treats Array Parameters as Pointers"
里有很详细的说明..

当然你也可以说那是作者一厢情愿的借口而已...-_-!
	

>呵呵,可能是我钻牛角尖了,不过我还是觉得这是由于实质上 由于为了保持 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];};; 这种当参数传入时都是传值进入的。说是为了效率只是一厢情愿的借口。



        致
礼!
 				

        evilangel
        evilangel2000 at 163.com
          2006-03-23



More information about the Cpp mailing list