C++ array of pointers介绍及实例

177 阅读5分钟

C++ array of pointers

介绍C++数组的指针

数组是保存元素列表的东西,而指针是保存变量地址的东西。因此,一个指针数组代表了一个持有数组内元素地址的数组。当我们想操作数组数据时,就需要这个指针数组。指针数组使我们的操作变得简单,因为数组在本质上是非常有约束力的,所以这个指针数组将包含数组中存在的每个元素的地址。 指针数组持有数组元素的内存地址。我们将在接下来的章节中更详细地讨论这个问题。在本专题中,我们将学习C++的指针数组。

语法

在c++中,如果我们想声明一个指针数组,那么我们必须创建一个数组,它将保存其他元素的地址,这些元素指向该地址的某个值。为了更好地理解,我们将看到它的语法,如何在编程时使用它,见下文。

type *name_of_pointer [size_or_array];

在上面的语法中,如果我们想创建一个指针数组,那么我们必须首先定义数组指针的类型;然后,我们定义指针的名称,但请记住,在C++中我们总是使用'*'这个严格的符号来定义指针,紧接着我们定义数组的大小,这意味着它将容纳多少个元素。为了更好地理解,我们将看到一个实践语法,见下文。

例子

int *myptr[10];

这可以在C++中定义一个指针数组;之后,我们可以将数组中的变量地址分配给他们。

指针数组在C++中如何工作?

到目前为止,我们知道指针数组是用来存储数组元素的地址的。简而言之,这个指针值指向数组中的元素的地址;如果我们想访问它们,我们可以通过使用它们的地址来访问数组中的每个元素,因为它只指向它们。所以我们可以说这些是指向C++中元素的一些其他值的指针。通过使用这个方法,它使我们的操作变得快速,也提高了性能。另外,对数组的操作也变得很容易,因为现在我们有了元素的地址,这使得对元素的访问变得容易。 所以现在我们将看到它们在C++编程语言中是如何工作的。

首先,我们将看到我们如何定义一个指针数组,见下文。

int *myptr[10];

在上面这行代码中,我们声明了一个可以容纳10个元素的指针数组。但是这个数组将保存元素的地址。为了得到元素的地址,我们在C++中使用了'&'关键字;通过使用这个关键字,我们可以得到元素的地址。地址只不过是元素在内存中存储的位置。总是地址被称为元素的内存地址。这个内存地址将指向存储在这个位置的元素。

假设我们有一些实时的情况,我们需要修改数组,但它们的性质是固定的,所以操作对我们来说是非常昂贵的。所以我们可以使用或维护一个指针数组,这将减少我们在修改数组元素时的工作量。现在我们来看看它们在内部是如何工作的。

假设我们有一个数组,里面有5个元素。

例子

int myarray [5] = {20, 40, 60, 80 , 100};

int *myptr [5]; // 这里存放着数组中元素的地址。

正如我们在上图中所看到的,我们在数组内有5个元素;同时,我们为数组中的每个元素都有一些内存地址。为了便于理解,我们假设它是memory-add1, memory-add2, 等等。那么,指针数组将做什么呢?他们将存储元素的地址,并在将来只引用该地址,所以这就是它在c++内部的工作方式。

array-of-pointers-image

如何在C++中创建一个指针数组?

以下是在C++中创建指针数组的步骤,具体如下。

1.首先,我们需要创建一个包含一些元素的数组。我们现在就说10个元素。

例子

int myarray [2] = {100, 200};

2.之后,我们要创建一个指针数组,用来存储数组元素的地址。

例子

int *myptr[2];

3.为了得到数组元素的地址,我们可以使用C++中的'&'运算符,这将给我们提供内存中元素的地址。

例子

myptr[1] = &myarray[1]; // so on ..

4.然后,我们将通过使用for循环遍历这些元素,把这些元素的地址存储到指针阵列中。这取决于我们希望它们被加载到数组中的逻辑。

5.现在,我们可以使用指针数组来访问数组中的元素;这将给我们带来同样的结果。

在下一节,我们将看到一个如何在C++中实现的例子。

C++指针数组的例子

在这个例子中,我们创建了一个包含多个元素的数组,并试图通过使用指针数组访问该数组并获得其值。

代码

#include <iostream>
int main() {
std::cout << "Demo to show array of pointers !!!\n";
int  myarray[5] = {100, 200, 300, 400, 500};
int *myptr[5];
std::cout << "Value of array !!\n";
for (int i = 0; i < 5; i+) {
std::cout << myarray[i] << std::endl;
}
myptr[0] = &myarray[0];
myptr[1] = &myarray[1];
myptr[2] = &myarray[2];
myptr[3] = &myarray[3];
myptr[4] = &myarray[4];
std::cout << "Value of array of pointers !!\n";
for (int i = 0; i < 5; i++) {
std::cout << *myptr[i] << std::endl;
}
}

输出

C++ array of pointers output

结论

通过使用指针数组,我们可以很容易地操作我们的数组,因为它们在本质上是非常有约束力的。我们只需要通过使用元素的地址来访问这些元素。这个地址只不过是元素在内存中的位置,可以直接访问它们。