楼上那哥们已经说到核心了,数组本质是指向一块内存的指针。
你首先定义了一个长度5的数组,这时候他的长度是5.当你再次赋值时,内存中会开辟一块新的长度为6的区块,然后将a的指针指向该块内存区域,这样长度就变成6了。你要理解数组长度一定是固定的(核心即某块内存区块长度是固定的,这个区块在被释放和回收之前长度都不会改变)。但是这只是相对的,相对于动态数组而言的(C语言没有动态数组),但是你可以将List理解为动态数组。
再提一点:a本身不是数组,只是数组的引用。这样说你可以理解了,之前a指向的那个数组长度固定不变,你新定义的a[6]=0这个数组的长度也固定不变。你赋值操作只是将a指向了新建的数组而不是将数组长度改变了。即你进行完a[6]=0这个操作以后,内存这两个数组都存在了,且{1,2,3,4,5}这个数组的长度依旧是5,只不过没有任何变量再指向该数组而已。
理解完这个问题以后建议你再去仔细看一下浅复制和深复制。因为不理解这些概念在程序运行过程中就可能会出错。
追问你绝对是c++或者java学得比较多,,,,
本回答被网友采纳