使用指针算法调用结构内的结构数组
Calling an array of structures inside a structure using pointer arithmetic
我正在尝试使用指针算法引用结构内部的结构(也是一个数组(,
结构如下:
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
元素,请执行以下任一操作:
(c->teams)[i]
*(c->teams + i)
根据定义,两者完全相同。
您将其标记为C++,因此不要使用原始指针。使用适当的C++库:
struct Team {
..
};
struct Championship {
std::vector<Team> teams;
};
这更安全,更短,具有适当的分配和分配。实际上,与使用原始指针相比,它在各个方面都是最好的。
你的代码在所有方面都需要更加谨慎,它缺乏内存分配和释放(这应该在构造函数中完成,而不是像你所做的那样(,它基本上是 C 代码。
如果需要共享指针,则可以根据需要将std::unique_ptr<T>
用于单个所有权或std::shared_ptr<T>
。
相关文章:
- C++将文本文件中的数据读取到结构数组中
- JSON转换为nlohmann JSON-lib中的结构数组
- 需要帮助将结构数组传递给函数
- 在 64 位边界上对齐C++结构数组?
- 带有枚举方向/类型的气泡排序结构数组
- 在C++中访问结构数组中的数据
- 从指向结构数组的指针中提取元素
- 如何制作一个地图,其中的值是C++中的结构数组
- 如何在函数中显示结构数组
- 包含作为成员C++函数的结构数组
- 如何修复函数中的 fstream 文件输入以将正确的信息存储在结构数组中?
- std::transform 将一个结构数组复制到另一个结构数组
- 将非托管结构数组封送到托管数组
- 显示结构数组
- 结构数组中所有类似字段的总和
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- 在 glsl opengl 中将嵌套结构数组作为统一传递
- 使用初始化列表填充C++中的多维结构数组时出现问题
- 如何将字符串字符与结构数组进行比较?
- C++结构数组