指针与数组
指针是一种保存对内存位置的引用的数据类型(即指针变量存储某个存储数据的内存位置的地址)。数组是存储元素集合的最常用的数据结构。大多数编程语言都提供了方法来轻松地声明数组和访问数组中的元素。
什么是指针?
指针是一种数据类型,用于存储存储某些数据的内存位置的地址。换句话说,指针保存对内存位置的引用。访问存储在指针引用的内存位置中的数据称为取消引用。当执行诸如遍历树/字符串、表查找等重复操作时,使用指针可以提高性能。这是因为取消引用和复制指针比实际复制和访问指针所指向的数据便宜。空指针是不指向任何对象的指针。在Java中,访问空指针将生成一个称为NullPointerException的异常。
什么是数组?
如图1所示,是一段代码,通常用于声明并向数组赋值。图2描述了数组在内存中的样子。
int值[5];值[0]=100;值[1]=101;值[2]=102;值[3]=103;值[4]=104; |
图1:声明和分配数组值的代码
100 | 101 | 102 | 103 | 104 |
索引:0 | 1 | 2 | 三 | 4 |
图2:存储在内存中的数组
上面的代码定义了一个可以存储5个整数的数组,并使用索引0到4访问它们。数组中的每一个元素都被分配了一个重要的数组。一旦定义了数组,它的大小就固定了。因此,如果在编译时不确定数组的大小,那么就必须定义一个足够大的数组来保证安全。但是,大多数情况下,我们实际使用的元素数量少于我们分配的数量。所以相当多的内存实际上被浪费了。另一方面,如果“足够大的数组”实际上不够大,程序就会崩溃。
指针和数组有什么区别?