C++指针数组实现数组元素的读写
指针数组介绍
指针数组是一种元素为指针类型的数组,它的每个元素都存储了一个指向其他类型的指针。指针数组可以用来实现数组元素的读写,以及对数组的动态分配和释放。
指针数组的实现
指针数组的声明方式如下:
type *array[size];
其中type表示指向的类型,*表示指针类型,array表示数组名,size表示数组大小。在这个数组中,每个元素都是指向type类型的指针。
指针数组的元素可以通过下标进行访问,例如,访问第i个元素可以使用如下的语法:
type *p = array[i];
其中p是指向第i个元素的指针,*p表示第i个元素的值。可以通过*p来修改元素的值,例如:
*p = new_value;
其中new_value是新的值。
指针数组的应用
指针数组可以用来实现数据结构中的树、图等复杂数据结构。例如,可以用指针数组来表示树的节点和图的边:
1. 树的节点表示
struct node { int val;
node *left;
node *right;
};
node *array[size];
在这里,每个节点包含一个val值和两个指向其左右子节点的指针。指针数组array用来存储树的每个节点。
2. 图的边表示
struct edge { int from;
int to;
};
edge *array[size];
在这里,每条边分别包含起始点from和终止点to。指针数组array用来存储图的每条边。
指针数组还可以用于动态分配和释放内存。例如,可以通过指针数组来动态创建和销毁节点或边:
for (int i = 0; i < size; i++) { array[i] = new node;
}
for (int i = 0; i < size; i++) {
delete array[i];
}
在上面的代码中,使用指针数组来动态创建和销毁节点。首先,使用new关键字来创建size个节点并将指针存储在array数组中。然后,使用delete关键字释放所有节点的内存。