c - 结构体和结构体成员的数组元素

标签 c struct

我想问一下C语言中的结构声明。例如,

struct Person
{
    char name[50];
    int citNo;
    float salary;
} prsn[20];

[20] 的作用是什么?这是什么意思?是否将名称限制为 20 个(从 50 个)或将 prsnprsn[1] 限制为 prsn[20]

如果我写这样的代码:

struct Person
{
    char name[50];
    int citNo;
    float salary;
};
struct Person prsn[20];

它做同样的事情吗?

最佳答案

上面的两段代码是等效的。

在第一个中,您定义 struct Person并定义prsn同时作为该结构的 20 个元素的数组。在第二个中,您首先定义结构,然后单独定义数组。

在 C 语言中,数组索引从 0 开始,因此在这两种情况下 prsn数组包含索引从 0 到 19 的元素。这不会影响 name 的大小member,这是一个 50 元素的数组。你有一个包含 20 struct Person 的数组,每个都包含一个 50 个元素的数组 charname .

关于使数组大小不受限制,数组必须有一个大小,可以在[之间明确指定。和]或通过初始化列表隐式地进行。大小可以是一个变量,但是这样的数组不能在文件范围内定义,并且大小变量必须事先已分配一个值。

关于c - 结构体和结构体成员的数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59268407/

相关文章:

c++ - 在结构中存储 COM 指针

c - 打开 Windows 资源管理器 Shell 上下文菜单

c - 将两个二进制文件合并到一个新文件中

c++ - GLUT 键盘事件

c - 二维数组 : Alphabetical Sorting in C

c++ - 将矩阵字段设置为 Matlab 结构

c - 指向 union 中允许的类似布局的功能的指针?

pointers - 在方法中初始化一个 nil 指针结构

c - 允许 "overriding"具有内部链接的零初始化对象

将字节数组转换为c中的结构体