
介绍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++内部的工作方式。

如何在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;
}
}
输出

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