下面定义的结构没有结构名称.而且我无法得到阵列部分.提前致谢. 结构数组中的值是什么意思?
#include <stdio.h>
int main()
{
struct
{
int x,y;
} s[] = {10,20,15,25,8,75,6,2};
int *i;
i = s;
clrscr();
printf("%d\n",*(i+3));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
zwo*_*wol 10
现在我们有一个可以回答的问题:
struct
{
int x,y;
} s[] = {10,20,15,25,8,75,6,2};
Run Code Online (Sandbox Code Playgroud)
这声明了一个名为s匿名结构的数组.每个结构都有两个int字段.未指定数组大小,因此它将保持初始化列表所需的大小("初始化列表"是等号后括号括起的数字列表的技术术语).
教科书中的代码很草率; 它没有标记初始化列表中的子结构; 这是允许的,但被认为是糟糕的风格.编译器解释它与代码完全相同:
struct
{
int x,y;
} s[] = { {10,20}, {15,25}, {8,75}, {6,2} };
Run Code Online (Sandbox Code Playgroud)
每个大括号括起来的数字初始化数组的一个元素s.第一个数字初始化x,第二个数字y.所以,所有这些都是真的:
s[0].x == 10
s[0].y == 20
s[1].x == 15
s[1].y == 25
Run Code Online (Sandbox Code Playgroud)
等等.
每当您确实需要引用struct不超过一次时,创建它的变量而不给它命名是有意义的。
在 C 语法中实现它是
struct{
/*
.
.your structure members
.
*/
}<variable name>;
Run Code Online (Sandbox Code Playgroud)
在你的情况下s是一个数组
struct
{
int x,y;
}
Run Code Online (Sandbox Code Playgroud)