gpt4 book ai didi

c++ - 获取带指针的二维数组元素

转载 作者:行者123 更新时间:2023-11-28 02:29:52 25 4
gpt4 key购买 nike

有问题。例如我有一个代码

class A
{
public:
int **p;
const int size=4;
A()
{
p=new int*[size];
for(int i = 0 ; i<size;i++)
{
p[i]=new int[size];
}

for(int i = 0 ;i<size*size;i++)
{
*(*p+i)=0;
}
}
};

然后我创建类 A *matrix=new A; 的动态对象我如何获得对 **p 的公共(public)访问权限?我知道如何使用函数:

int A::GetElement(int position)
{
return *(*p+position);
}

但有趣的是如何用简单的方式做到这一点。我尝试了 matrix->*(*p+i) 但没有成功。

最佳答案

只需使用 2 个索引,用于数组的 2 个索引。

#include <iostream>

class A
{
public:
int **p;
const int size=4;
A()
{
p=new int*[size];
for(int i = 0 ; i<size;i++)
{
p[i]=new int[size];
}

for(int i = 0 ;i<size*size;i++)
{
p[i / 4][i % 4] = 16 - 1 - i;
}
}
~A()
{

for(int i = 0 ; i<size;i++)
{
delete[] p[i];
}
delete[] p;
}
};

int main(int, char**)
{
A* a = new A();

int i, j;
for(i = 0; i < a->size; i++)
{
for(j = 0; j < a->size; j++)
{
std::cout << a->p[i][j] << '\n';
}
}

for(i = 0; i < a->size; i++)
{
for(j = 0; j < a->size; j++)
{
std::cout << *(*(a->p + i) + j) << '\n';
}
}

for(int i = 0 ;i<(a->size * a->size);i++)
{
std::cout << *(*(a->p + (i / a->size)) + (i % a->size)) << '\n';
}

delete a;
}

使用指针取消引用。

std::cout << *(*(a->p + i) + j) << '\n';

但还是需要双循环。

在一个循环中

std::cout << *(*(a->p + (i / a->size)) + (i % a->size)) << '\n';

关于c++ - 获取带指针的二维数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29327337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com