我已经有了一些想法,但我认为从沙发上的精彩人士那里得到一些意见是很好的。
如果我的问题太宽泛或含糊不清,请告诉我。
答案 0 :(得分:9)
问题有点宽泛,但是......
struct是聚合或复合数据类型,用于表示由可能不同类型的多个属性描述的实体。一些例子:
让我们看一下邮寄地址作为一个具体的例子。我们可以按如下方式定义我们的邮寄地址类型:
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;
};
我们会像这样创建一个该结构的实例:
struct Address newAddress;
和指向该实例的指针:
struct Address *addrPtr = &newAddress;
并使用.
或->
运算符访问每个字段,具体取决于我们是处理结构实例还是指向结构的指针:
newAddress.streetName = strdup("Elm");
addrPtr->buildingNumber = 100;
...
查看结构的另一种方法是类似于由多个字段组成的数据库记录。
答案 1 :(得分:6)
这是一个自定义内存布局,内存区域内的偏移量具有人类可读的别名。
答案 2 :(得分:2)
也许不是最简单的解释,但为了完整起见,这就是标准对结构的看法(C996.2.5§20):
结构类型描述了一个 顺序分配非空集 成员对象(在某些情况下) 情况,一个不完整的数组), 每个都有一个可选的 指定的名称,可能不同 类型。
答案 3 :(得分:0)
来自MSDN -
结构类型是用户定义的复合类型。它由可以具有不同类型的字段或成员组成。