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

时间:2017-10-11 15:01:58

标签: c

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

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

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

4 个答案:

答案 0 :(得分:3)

方括号是数组索引操作符。

基本上对于任何指针p和整数索引ip[i]*(p + i)相同。它取消引用索引元素,从p的基数开始索引。

这与数组在你也有指针的结构中没有任何关系。

所以gindex是一个结构数组,在某个结构中你有一个名为aaa的指针。索引aaa->elp_pos处的元素已取消引用,并且索引parameter的结构的aaa->no_elp数组元素已分配给。

这是一个复杂的代码行,但它并没有做任何复杂的事情。 :)

答案 1 :(得分:3)

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

基于该表达式,必须满足以下条件:

  • 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,该成员与{{1>} 相同,类型为T数组{ {1}}或与 parameter 兼容的类型。

  • struct B用作数组索引,因此它必须具有一些整数类型 T

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

counter1

答案 2 :(得分:1)

表达式中的方括号用于索引数组。例如......

int my_array[10];
my_array[0]=68;

在您的示例gindex中,parameterobs都是某种未知类型的数组。我们唯一可以告诉他们的是,它们不是指针数组,因为它们的元素是用“。”访问的。而不是“ - >”

答案 3 :(得分:0)

在C中,Square Brackets是数组索引运算符。

例如,取一个 char * str ,这是一个字符串上的指针。

如果你想打印这个字符串的“n”字符,你需要这样做

  

字符串:

char *str = "Hello World";
  

你想要打印“W”,所以你必须这样做:

print("%c", str[6]);