C语言的数组与python列表的比较
C语言中的数组特点
(1)在C语言中,数组一旦被定义后,占用的内存空间就是固定的,容量就是不可改变的,既不能在任何位置插入元素,也不能在任何位置删除元素,只能读取和修改元素,我们将这样的数组称为静态数组。反过来说,如果数组在定义后可以改变容量,允许在任意位置插入或者删除元素,那么这样的数组称为动态数组。
1、PHP、JavaScript 等解释型的脚本语言一般都支持动态数组,而 C、C++ 等编译型的语言一般不支持动态数组。
2、总之,C语言中的数组是静态的,一旦定义后长度就不能改变了,不要尝试去插入或删除元素。
(2)C语言中的数组不能存放不同类型的数据,这种特性是由计算机的存储机制与读取决定的。
详细的具体实现内容如下:
以32位系统为例,一个整数的存储大小为4字节,C语言定义一个数组a,数组中都是整数,则每个整数的存储占据计算机内存的4个字节。假如第一个整数的开始存储位置是100,则第二个整数的开始存储位置是104,以此类推。当读取数组a的第三个整数时,a[2],此时计算机计算存储位置是数组a开始的100位,100+4*2=108,读取108存储位置的4字节数据。同理,相同的浮点数也可以这样读取。
Python中的列表结构
(1)Python中的列表是动态列表,可以增加元素,删除元素,更改元素的内容。当创建一个列表时,列表的长度已经确定,增加元素时,把列表中的内容复制过来,同时开辟一个比原来更多的空间,不局限于增加几个元素,多开辟几个空间,也可能4个位开辟出8个位置的。
(2)Python列表可以同时容纳不同类型的数据,但此时在底层存储时,列表b的开始存储位置是100,列表中的内容可变成整数类型的类似于指针的数据,假如100位置数据是888,则读取数据时指向888位置的数据。即使是不同的数据类型都可以用一个整数替代。获取列表第三个数据,b[2],计算机首先得到列表的存储头部100,然后100+4*2=108,取出108位置的4字节数据,然后根据指示的存储位置指向具体数据。