Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用指针算法调用结构内部的结构数组_C++ - Fatal编程技术网

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元素的指针。