数组和指针之间的区别

作者: Laura McKinney
创建日期: 1 四月 2021
更新日期: 11 七月 2024
Anonim
是不是一直搞不懂C语言的指针?看完这个动画,你就全明白了
视频: 是不是一直搞不懂C语言的指针?看完这个动画,你就全明白了

内容


数组和指针之间有密切的关系。指针可用于访问数组元素,使用指针算法访问整个数组,可加快访问速度。指针和数组之间有一个基本区别,即数组是相似数据类型的变量的集合,而指针是存储另一个变量的地址的变量。数组和指针之间还有一些其他差异,下面将在比较表中进行讨论。

  1. 比较表
  2. 定义
  3. 关键差异
  4. 结论

比较表

比较基础数组指针
宣言//在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个字节。

  1. 数组存储相似数据类型的变量,并且变量的数据类型必须与数组类型匹配。另一方面,指针变量存储变量的地址,其类型类似于指针变量类型。
  2. 我们可以生成一个指针数组,即其变量为指针变量的数组。另一方面,我们可以创建一个指向数组的指针。
  3. Java支持数组,但不支持指针。
  4. 数组大小决定了它可以存储的变量数量;而指针变量只能存储唯一变量的地址

注意:

Java不支持或严格避免使用指针。

结论:

当我们需要处理相似数据类型的数据元素时,而不是单独处理变量,我们可以创建一个包含相似数据类型的变量的数组,然后对其进行操作。指针对于某些程序是必需的,它提供了强大的功能,但是不幸的是,如果指针包含不正确的值,它将是最难找到的错误。