C++ 使用指针算法调用结构内部的结构数组
我试图使用指针算法在结构中引用一个结构(也是一个数组) 结构如下:C++ 使用指针算法调用结构内部的结构数组,c++,C++,我试图使用指针算法在结构中引用一个结构(也是一个数组) 结构如下: struct Team { int name; int **games; }; struct Championship { Team *teams; unsigned int size; }; Championship *c; c= new Championship; c->teams= new Team[2]; 我尝试使用[]引用数组的位置,其工作原理如下: int i=0;(Jus
struct Team
{
int name;
int **games;
};
struct Championship
{
Team *teams;
unsigned int size;
};
Championship *c;
c= new Championship;
c->teams= new Team[2];
我尝试使用[]引用数组的位置,其工作原理如下:
int i=0;(Just as an example)
c->teams[i].name;
它甚至适用于团队结构中的矩阵:
c->teams[i].games[i][i];
但我不知道如何使用指针算法实现这一点,因为我执行了以下操作:
c->(teams+i);
给我一个错误,告诉我:
error: expected unqualified-id before '(' token
error: 'teams' was not declared in this scope
如何对此结构使用指针算法?
c->teams
是指向数组第一个元素的指针。如果要i
th元素,请执行以下任一操作:
(c->teams)[i]
*(c->teams + i)
定义中的定义完全相同。
你把它标记为C++,所以<强>只是不要使用原始指针< /强>。使用适当的C++库:
struct Team {
..
};
struct Championship {
std::vector<Team> teams;
};
struct团队{
..
};
结构锦标赛{
病媒小组;
};
这更安全、更短,并且有适当的分配和解除分配。实际上,与使用原始指针相比,它在所有方面都是最好的
您的代码在任何方面都需要更加谨慎,它缺少内存分配和释放(这应该在构造函数中完成,而不是像您现在这样),它基本上是C代码
如果您需要共享指针,那么您可以使用
std::unique_ptr
作为单一所有权,或者根据需要使用std::shared_ptr
。当您希望以数组形式访问内存时,不要使用指针算法。有时很难正确理解,可能更难阅读和理解,也更难编写。但为了帮助您,指针指向c->teams
(完整),您需要使用c->teams+i
获取i
:th元素的指针。