整理一下曾经在开发中遇到的一些数组的重点内容
容易忽视的小细节:[]中不定义元素个数,定义时必须初始化
- 多维数组
- 指向数组的指针
- 传递数组的函数
- 从函数返回数组
1.多维数组
在游戏开发中,二维数组多用来表示2D的平面向量或者地图,三维数组则多用来表示三维空间中的坐标XYZ;不过为了项目中表达的方便性,一般采用结构体将多维数组包容在内,
2,指向数组的指针
俗称 数组指针,与另一个指针数组相差非常大,不要弄混
int arr[5] = { 1,2,3,4,5 };
int *p = arr;
for (int i = 0; i < 5; i++) {
cout << *(p + i) << endl;
}
for (int y = 0; y < 5; y++) {
cout << arr[y] << endl;
}
for (int x = 0; x < 5; x++) {
cout << *(arr+x) << endl;
}
如果是指向二维数组的指针 那么我直接在第三个问题里一并解决
3.传递数组的函数
一般让数组作为函数参数有三种方式(指针,已定义大小的数组,未定义大小的数组),在开发中基本只用指针来进行
常规的一维数组不做介绍,现在结合上方的指针数组来写一个函数
void ArrayReturn(int **arr) {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
cout << arr[i][j] << endl;
}
}
}
int main()
{
int arr[2][2] = {1,2,3,4};
int *p[2];
for (int i = 0; i < 2; i++) {
p[i] = arr[i];//指针数组p保存arr的第一维地址
}
ArrayReturn(p);
return 0;
}
使用引用传递多维数组
#include <iostream>
using namespace std;
void Array(int(&arr)[2][2]){
cout<<arr[1][1]<<endl;
}
int main()
{
int arr[2][2]={1,2,3,4};
Array(arr);
}