这听起来很基本,但我想知道方括号在这样的C代码中代表什么。我没有关于结构“aaa”的结构元素类型的信息,我试图从代码中理解它。它是否必须代表数组索引,或者它可以是与结构相关的不同内容?
我理解为这样:“ - >”意味着gindex是结构aaa的元素,然后括号和参数是任何括号代表的元素,然后是方括号。
aaa->gindex[aaa->elp_pos].parameter[aaa->no_elp] = sin->obs[counter1].typ_enu;
答案 0 :(得分:3)
方括号是数组索引操作符。
基本上对于任何指针p
和整数索引i
,p[i]
与*(p + i)
相同。它取消引用索引元素,从p
的基数开始索引。
这与数组在你也有指针的结构中没有任何关系。
所以gindex
是一个结构数组,在某个结构中你有一个名为aaa
的指针。索引aaa->elp_pos
处的元素已取消引用,并且索引parameter
的结构的aaa->no_elp
数组元素已分配给。
这是一个复杂的代码行,但它并没有做任何复杂的事情。 :)
答案 1 :(得分:3)
方括号是数组索引运算符。
基于该表达式,必须满足以下条件:
aaa
是指向某种结构类型的指针,我们称之为struct A
。
struct A
至少包含以下成员:gindex
,elp_pos
和no_elp
。
gindex
是指向另一个struct
类型的数组或指针,我们称之为struct B
。
elp_pos
和no_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
中,parameter
和obs
都是某种未知类型的数组。我们唯一可以告诉他们的是,它们不是指针数组,因为它们的元素是用“。”访问的。而不是“ - >”
答案 3 :(得分:0)
在C中,Square Brackets是数组索引运算符。
例如,取一个 char * str ,这是一个字符串上的指针。
如果你想打印这个字符串的“n”字符,你需要这样做
字符串:
char *str = "Hello World";
你想要打印“W”,所以你必须这样做:
print("%c", str[6]);