我的C++primer习题答案的迷惑
练习2。1
为什么内置数组类型不支持数组之间的赋值,支持这种操作需要什么信息!
我的答案:
是因为内置数组是一种数据结构,结构化编程数据和算法是分离的,所以数组不能对自己做出任何有意义的动作;要支持这种操作,数组第一要知道自己的长度,第二自己知道每个元素的位置,第三能运用算法遍历每个元素。
候杰译标准答案:
数组名,其实代表着一个常量指针,所以将一个数组,好像是将常量5赋值给常量3一样,虽然语法正确,但在语意层面上会产生错误。
c++语言并示支持数组的赋值操作,编译器必须在执行时期知道数组的长度,才能产生程序代码,支持数组对数组的赋值操作。
我的迷惑:定义数组必须指定类型长度,在执行的时候可以为期分配内存空间。
我想知道,在执行的时候到底知道不知道数组的长度?如果知道了长度,按标准答案的说法,应该能支持数组之间的赋值操作?
[解决办法]
个人认为执行的时候数组不知道自己的长度,定义的时候指定大小,一次性分配内存之后,长度信息就丢失了。
[解决办法]
对啊。内存是要确定并分配的,但C++并没有什么好记录下它的长度。所以要靠程序员保证所使用的不能越界就是这个道理。
[解决办法]
编译器必须在执行时期知道数组的长度,数组名,代表常量指针,指针可以被改变,指向的内容不能被改变
[解决办法]