#include <iostream>
//数组指针: 指针指向数组
//指针数组: 数组中存放的是指针
//当二维数组作为参数传递时需要传递二维数组数组指针
void print(int(*arr)[3]);
int main()
{
int arr[2][3] = { 0, 1, 2, 3, 4, 5 };
int(*pArr)[3] = arr;
int* p = arr[0]; //将二维数组转化为类似于一维数组的方式进行访问,二维数组在内存中的存储也是先行
std::cout << sizeof(arr[0]) / sizeof(int)<< std::endl;//后列的方式存储,所以第二行也紧跟第一行之后
std::cout << p[5] << std::endl;
print(arr);
std::cout << *(*(pArr + 1) + 2) << std::endl; //以指针数组的方式输出arr[1][2]
std::cout << pArr[1][2] << std::endl; //以数组下标的方式输出pArr[1][2] 即arr[1][2]
system("pause");
return 0;
}
void print(int(*arr)[3])
{
int *p = arr[0];
for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 3; ++j)
{
std::cout << arr[i][j] << " ";
}
std::cout << std::endl;
}
}
//数组指针: 指针指向数组
//指针数组: 数组中存放的是指针
//当二维数组作为参数传递时需要传递二维数组数组指针
void print(int(*arr)[3]);
int main()
{
int arr[2][3] = { 0, 1, 2, 3, 4, 5 };
int(*pArr)[3] = arr;
int* p = arr[0]; //将二维数组转化为类似于一维数组的方式进行访问,二维数组在内存中的存储也是先行
std::cout << sizeof(arr[0]) / sizeof(int)<< std::endl;//后列的方式存储,所以第二行也紧跟第一行之后
std::cout << p[5] << std::endl;
print(arr);
std::cout << *(*(pArr + 1) + 2) << std::endl; //以指针数组的方式输出arr[1][2]
std::cout << pArr[1][2] << std::endl; //以数组下标的方式输出pArr[1][2] 即arr[1][2]
system("pause");
return 0;
}
void print(int(*arr)[3])
{
int *p = arr[0];
for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 3; ++j)
{
std::cout << arr[i][j] << " ";
}
std::cout << std::endl;
}
}
本文介绍了C++中二维数组与指针的关系。通过示例展示了如何使用指针数组和数组指针来操作二维数组,包括如何传递二维数组作为参数,以及如何以一维数组方式访问二维数组。同时,文中还演示了如何通过指针遍历并打印二维数组的内容。
1253

被折叠的 条评论
为什么被折叠?



