c - (嵌套)C 结构中的方括号

标签 c

这听起来非常基本,但我想知道方括号在这样的 C 代码中代表什么。我没有有关结构“aaa”的结构元素类型的信息,我试图从代码中理解它。它是否必须代表数组索引,或者它可以是与结构相关的不同事物?

我是这样理解的:“->”意味着gindex是结构aaa的一个元素,然后括号和参数是括号代表的元素,然后是方括号。

aaa->gindex[aaa->elp_pos].parameter[aaa->no_elp] = sin->obs[counter1].typ_enu;

最佳答案

方括号是数组索引运算符。

根据该表达式,以下内容必须为真:

  • aaa 是指向某种结构类型的指针,我们将其称为struct A

  • struct A 至少包含以下成员:gindexelp_posno_elp

  • gindex 是另一个 struct 类型的数组或指针,我们将其称为 struct B

  • elp_posno_elp 用作数组索引,因此它们必须具有某种整数类型I

  • struct B 至少包含成员parameter,它是某种类型的数组或指针T

  • sin 是指向某种结构类型的指针,我们将其称为struct C

  • struct C 至少包含成员 obs

  • obs 是某个 struct 类型的数组或指针,我们将其称为 struct D

  • struct D 至少包含成员 type_enu,它是相同类型 T作为 struct B 中的 parameter 数组,或与 T 兼容的类型。

  • counter1 用作数组索引,因此它必须具有某种整数类型I

    <

因此,我们的类型如下所示:

struct D 
{
  ... 
  <em>T</em> type_enu;
  ...
};

struct C
{
  ...
  struct D obs[N]; // or struct D *obs;
  ...
};

struct B
{
  ...
  <em>T</em> parameter[N]; // or <em>T</em> *parameter;
  ...
};

struct A
{
  ...
  <em>I</em> elp_pos;
  <em>I</em> no_elp;
  struct B gindex[N]; // or struct B *gindex
  ...
};

struct A *aaa;
struct C *sin;
<em>I</em> counter1;
...

关于c - (嵌套)C 结构中的方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46691621/

相关文章:

c - 如何编写一个函数来检查两个数组是否水平对称?

c - 从c中的节点列表中删除一个元素

c - 如何在 C 的循环中正确使用 scanf 和数组?

c - 与单进程场景​​相比,多进程场景中的访问时间意外减少

c - 在 C 中修改链表项的正确方法

c - ISO C95 数组初始化保证

c - libuv 事件循环和 libcurl

c - GSM模块与电脑串口通讯

c - 真实分配 : invalid next size while splitting a line

c - 哪种使用 C 数组的数据组织可以生成最快的代码,为什么?