关于在C/C++中数组不能直接赋值的问题

大 家都知道在C/C++中数组是不能直接赋值的,要赋值必须一个一个的赋值。现在我想知道C/C++的实现者为什么要这么做?按理说数组也是一个内置的数据 类型,能够直接赋值是顺利成章的事情,为什么要搞得不能赋值,而且还有数组名代表的是数组的地址为什么不能象结构(struct)的变量名一样代表的是它 的内存块的内容呢?
还有我一直认为数组的定义int a[10]很别扭,没有int[20] a那么直观。定义一般就是
类型 变量名;
这点在java中就做得很好。

上面的所有问题我现在很糊涂,希望知道的兄弟姐妹帮帮我!不知道当初的c/c++的设计者和标准的制定者是出于什么方面的考虑才把它们设计成这个样子???

manphiz 06-05-18 14:11
在 C/C++中,普通数组只是分配在连续地址上的一段相同类型的变量组成的,而不是一个变量。像a[n]并不是一个变量,而是通过指向第一个值的指针来操作 的。数组和指针有着很密切的联系。可以认为数组操作是指针操作的另一种写法。因此像数组整体赋值这类操作是没有意义的,因为它们不是一个整体。

至于声明语法,这是一个很复杂的历史过程了,可以看看C Design Rationale之类的东西。

转自:http://blog.163.com/kmustchenb@126/blog/static/11090576520101023050799/

posted @ 2013-03-20 18:35  stma  阅读(1741)  评论(0)    收藏  举报