数组和指针之间的区别
![是不是一直搞不懂C语言的指针?看完这个动画,你就全明白了](https://i.ytimg.com/vi/KXaoMKbRLKc/hqdefault.jpg)
内容
数组和指针之间有密切的关系。指针可用于访问数组元素,使用指针算法访问整个数组,可加快访问速度。指针和数组之间有一个基本区别,即数组是相似数据类型的变量的集合,而指针是存储另一个变量的地址的变量。数组和指针之间还有一些其他差异,下面将在比较表中进行讨论。
- 比较表
- 定义
- 关键差异
- 结论
比较表
比较基础 | 数组 | 指针 |
---|---|---|
宣言 | //在C ++中 输入var_name; //在Java中 输入var-name; var_name =新类型; | //在C ++中 输入* var_name; |
工作中 | 存储同类数据类型的变量的值。 | 存储与指针变量数据类型相同数据类型的另一个变量的地址。 |
代 | 可以生成一个指针数组。 | 可以生成指向数组的指针。 |
Java支持 | 支持数组的概念。 | 不支持指针。 |
存储 | 普通数组存储变量的值,指针数组存储变量的地址。 | 指针是专门为存储变量的地址而设计的。 |
容量 | 数组可以存储元素的数量,在数组变量的大小中提到。 | 指针变量一次只能存储一个变量的地址。 |
数组的定义
数组是相同数据类型的元素的集合,并且所有这些元素都由一个通用名称(即数组变量的名称)引用。可以通过访问存储该数组的特定索引来访问特定数组元素。数组可以是一维数组,二维数组或多维数组。也可以生成指针数组,即包含所有变量作为指针变量的数组。在“ C ++”中,数组是静态分配的,而在“ Java”中,数组是动态分配的。
//在C ++中输入var_name; //在Java中输入var-name; var_name =新类型;
在这里,“类型”表示数组变量的数据类型,“变量名”表示给数组变量的名称,“大小”表示数组变量的容量,即“类型”中可以存储多少个元素。有两种访问数组的方法,第一种是“指针算术”,第二种是“数组索引”,其中“指针算术”更快。
//使用指针算术访问Void display_array(int * S){while(* s){cout(<<“ value is” << * s); * s ++; }}
与“数组索引”相比,使用“指针算术”的速度更快,即使用其索引访问数组变量。如果您需要将指针数组传递给函数,则可以使用与传递普通数组相同的方法来完成,即直接使用数组名称调用函数,而无需任何索引。
让我们通过示例了解它
//声明指针数组int * p;
在这里,它表明“ p”是整数类型的数组,它将保存10个整数类型变量的地址。让我们将上述指针数组传递给函数display()。
显示(p); //调用函数显示。 void display(int * d){//获取指针数组的函数。 for(int i = 0; i <10; i ++){cout <<(“ index” <
该函数将显示变量中存在的值,其值顺序存储在此指针数组中。
指针的定义
指针是一个变量,用于保存另一个变量的内存地址。指针变量和其地址已分配给指针变量的变量的数据类型必须相同。指针变量声明如下。
//以C ++类型*名称声明;
在这里,“类型”是数据类型,“名称”是指针变量的名称。 “类型”定义了指针变量中可以存储哪种变量的地址。例如,整数指针将存储整数变量的地址。有两个指针运算符“ *”和“&”。运算符“ *”返回位于地址的值,该值存储在变量中,后跟“ *”号。 “&”运算符返回变量的地址,后跟“&”号。
//例如int b = 10 int a =&b; // b的地址存储在变量a中。 //让b的地址为2000,所以现在a = 2000。 int c = * a; //这里,整数指针变量* a将返回位于.ie中存储的地址处的值。 c = 10。
您只能对指针使用两个算术运算符,即加法和减法。如果对整数指针变量应用增量,则它将增加数据类型的大小,即增加2个字节,因为它是整数指针,增量时必须指向下一个整数变量。递减也是如此。
// p是包含值2000的整数指针。 //现在p = 2002。 p--; //现在p再次包含2000,减2个字节。
- 数组存储相似数据类型的变量,并且变量的数据类型必须与数组类型匹配。另一方面,指针变量存储变量的地址,其类型类似于指针变量类型。
- 我们可以生成一个指针数组,即其变量为指针变量的数组。另一方面,我们可以创建一个指向数组的指针。
- Java支持数组,但不支持指针。
- 数组大小决定了它可以存储的变量数量;而指针变量只能存储唯一变量的地址
注意:
Java不支持或严格避免使用指针。
结论:
当我们需要处理相似数据类型的数据元素时,而不是单独处理变量,我们可以创建一个包含相似数据类型的变量的数组,然后对其进行操作。指针对于某些程序是必需的,它提供了强大的功能,但是不幸的是,如果指针包含不正确的值,它将是最难找到的错误。