关于结构在C中的简单解释

Eri*_*tto 4 c struct

我已经有了一些想法,但我认为从这里的优秀人士那里得到一些投入会很好.

如果我的问题太宽泛或含糊不清,请告诉我.

Joh*_*ode 9

问题有点宽泛,但......

结构是聚合复合数据类型,用于表示由可能不同类型的多个属性描述的实体.一些例子:

  • 三维空间中的一个点,由3个实值坐标x,y和z表示;
  • 邮寄地址,由街道名称,住宅或公寓编号,城市,州,邮政编码代表;
  • 发票中的订单项,由部件名称或编号,单位成本,数量和小计表示;
  • 树中的节点,由键,数据值,左子节点和右子节点表示;

等等等

让我们看一下邮件地址作为一个具体的例子.我们可以定义我们的邮件地址类型如下:

struct Address {
  char *streetName; 
  int buildingNumber;  // House, apt building, office building, etc.    
  char *aptNumber;     // Handles apt and suite #s like K103, B-2, etc.
  char *city;
  char state[3];
  int zip;
};
Run Code Online (Sandbox Code Playgroud)

我们像这样创建一个该结构的实例:

struct Address newAddress;
Run Code Online (Sandbox Code Playgroud)

和指向该实例的指针:

struct Address *addrPtr = &newAddress;
Run Code Online (Sandbox Code Playgroud)

并使用.or ->运算符访问每个字段,具体取决于我们是处理结构实例还是指向结构的指针:

newAddress.streetName = strdup("Elm");
addrPtr->buildingNumber = 100;
...
Run Code Online (Sandbox Code Playgroud)

查看结构的另一种方法是类似于由多个字段组成的数据库记录.


Chr*_*fer 6

它是一个自定义内存布局,具有人类可读的别名,用于内存区域内的偏移.