您好,我刚刚开始了解指针和数组,我或多或少知道如何操作一维数组中的指针来显示元素。但是在多维数组中呢? 我一直在练习这段代码:
#include<iostream>
using namespace std;
int main()
{
int a[2][3]= { {1,2,3},{4,5,6}};
int (*ptr)[3] = &a[0]; // or (*ptr)[3] = a;
cout <<"Adress 0,0: "<< a << endl;
cout <<"Adress 0,0: "<< ptr << endl;
cout <<"Value 0,0: "<< *a[0] << endl;
cout <<"Value 0,0: "<< *(ptr)[0]<< endl;
cout <<"Adress 0,1: "<< &a[0][1] << endl;
cout <<"Adress 0,1: "<< (ptr)[1] << endl;
return 0;
}
我已经设法使用数组名称和指针显示 a[0][0] 的地址和值,但是如何通过使用显示 a[0][1] 的地址和值以及后续元素指针?
最佳答案
(ptr)[1]
(与 ptr[1]
相同)不指向 a[0][1]
,它指向 a[1][0]
因为您将 ptr
定义为指向 int[3]
的指针,而不是 int
。因此,使用 ptr[1]
将 ptr
递增 1
会跳过三个 int
,直到 a[ 1][0]
。
将 ptr
增加一个 int
而不是三个 int
的大小:
ptr[0] + 1
以上将指向a[0][1]
。并访问它:
*(ptr[0] + 1)
关于c++ - 使用指针显示多维数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28437867/