QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1108|回复: 3

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

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

    上面的所有问题我现在很糊涂,希望知道的兄弟姐妹帮帮我!不知道当初的c/c++的设计者和标准的制定者是出于什么方面的考虑才把它们设计成这个样子???
发表于 2006-5-18 13:58:39 | 显示全部楼层
其实数组在c++中并不是一个内置的数据类型,确切地说,数组只是一种特定的内存分配方式——连续的内存空间的申请和释放。比如说:
int a[10];
以后的代码里,数组名a代表的都只是这个数组首元素的地址而已。事实上,如果只有一个int* b而没有别的说明,那么这个b所指的到底是一个int还是一个int数组是未知的。
回复

使用道具 举报

 楼主| 发表于 2006-5-19 02:42:56 | 显示全部楼层
[quote:9f2dcd02c9="sjinny"]其实数组在c++中并不是一个内置的数据类型,确切地说,数组只是一种特定的内存分配方式——连续的内存空间的申请和释放。比如说:
int a[10];
以后的代码里,数组名a代表的都只是这个数组首元素的地址而已。事实上,如果只有一个int* b而没有别的说明,那么这个b所指的到底是一个int还是一个int数组是未知的。[/quote]

int a[10]和int *b肯定是有区别的,只是它们的操作方式是一样的而已。

既然没有类型,那么sizeof(a)和int (*p)[10]的p++的表现怎么解释?
回复

使用道具 举报

发表于 2006-5-19 08:36:00 | 显示全部楼层
c/c++最引人入胜的地方也许就是灵活的指针,我的理解就是c为了让人既便于接受,又不失灵活,所以定义了数组。二者的差别确实不大,但凡手熟的人还是用指针的多。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 16:40 , Processed in 0.058201 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表