c++数组指针|指针数组
大约 5 分钟
概念
指针数组
UE中一堆
对象指针
组成的数组
就是指针数组
例如:TArray<ACameraActor*>Camera。(多直观易懂)
语法:
typename* ArrayName[arraySize]
;
#include <iostream>
using namespace std;
int main() {
// 假设有三个整数
int a = 10, b = 20, c = 30;
// 声明一个指针数组,其中每个元素都是指向整数的指针
int* ptrArray[3];
// 将指针指向对应的整数
ptrArray[0] = &a;
ptrArray[1] = &b;
ptrArray[2] = &c;
// 使用指针数组中的指针访问对应的整数值
for (int i = 0; i < 3; ++i) {
cout << "Value at index " << i << ": " << *ptrArray[i] << endl;
}
return 0;
}
在这个例子中,ptrArray
是一个包含三个元素的数组,每个元素都是一个指向整数的指针。通过将这些指针分别指向整数变量 a
、b
和 c
,我们形成了一个指针数组。在循环中,我们使用指针数组中的指针访问对应的整数值。
指针数组在某些情况下非常有用,例如在处理字符串数组、动态分配内存等情况下。
i++与++i
多维指针数组
int arr[2][3]=
{
{1,2,3},
{4,5,6}
}
int arr[2][3][4] =
{
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
},
{
{13, 14, 15, 16},
{17, 18, 19, 20},
{21, 22, 23, 24}
}
};
arr[2][3][4]
arr[①][②][③]
|
|-- [0]
| |
| |-- [0]
| | |-- [0]
| | |-- [1]
| | |-- [2]
| | |-- [3]
| |
| |-- [1]
| | |-- [0]
| | |-- [1]
| | |-- [2]
| | |-- [3]
| |
| |-- [2]
| | |-- [0]
| | |-- [1]
| | |-- [2]
| | |-- [3]
|
|-- [1]
| |
| |-- [0]
| | |-- [0]
| | |-- [1]
| | |-- [2]
| | |-- [3]
| |
| |-- [1]
| | |-- [0]
| | |-- [1]
| | |-- [2]
| | |-- [3]
| |
| |-- [2]
| | |-- [0]
| | |-- [1]
| | |-- [2]
| | |-- [3]
#include <iostream>
int main() {
// 声明一个三维数组,2个矩阵,每个矩阵3行4列
int*** arr = new int**[2];
for (int i = 0; i < 2; ++i) {
arr[i] = new int*[3];
for (int j = 0; j < 3; ++j) {
arr[i][j] = new int[4];
}
}
// 初始化数组元素的值
int value = 1;
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
for (int k = 0; k < 4; ++k) {
arr[i][j][k] = value++;
}
}
}
// 访问数组元素
std::cout << "Value at (1,2,3): " << arr[1][2][3] << std::endl;
// 释放分配的内存
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
delete[] arr[i][j];
}
delete[] arr[i];
}
delete[] arr;
return 0;
}
数组指针
int array2[6] = {1, 2, 3, 4, 5, 6};
int *p2 = array2;
图中案例
语法 typename( * p)[n];
#include <iostream>
using namespace std;
int main() {
int array[5]={1,2,3,4,5};
int * P1 = array;//P指向array首元素,本质还是int指针。
int * P2 = &array[0];//注意看地址和P1一致。
int * P3 = &array[1];//注意看地址。
int (* P4)[5] = &array;//P2指向array整个内存空间.注意看IDEP4地址。
return 0;
}
多维数组指针
多维数组指针的基本语法如下:
声明二维数组指针:
int (*ptrTo2DArray)[Columns] = array2D;
其中,
Columns
是二维数组的列数,array2D
是二维数组的名字。声明三维数组指针:
int (*ptrTo3DArray)[Rows][Columns] = array3D;
其中,
Rows
是三维数组的行数,Columns
是列数,array3D
是三维数组的名字。访问元素:
value = ptrTo2DArray[i][j]; value = ptrTo3DArray[i][j][k];
使用指针可以通过索引访问多维数组的元素。
#include <iostream>
int main() {
// 声明一个二维整数数组
int array2D[3][4] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}};
// 声明一个指向二维数组的指针
int (*ptrToArray2D)[4] = array2D;
// 使用指针访问数组元素
std::cout << "Value at (1,2): " << ptrToArray2D[1][2] << std::endl;
return 0;
}