Struct (C programming language)

1

In the C programming language, struct is the keyword used to define a composite, a.k.a. record, data type a named set of values that occupy a block of memory. It allows for the different values to be accessed via a single identifier, often a pointer. A struct can contain other data types so is used for mixed-data-type records. For example a bank customer struct might contains fields: name, address, telephone, balance. A struct occupies a contiguous block of memory, usually delimited (sized) by word-length boundaries. It corresponds to the similarly named feature available in some assemblers for Intel processors. Being a block of contiguous memory, each field within a struct is located at a certain fixed offset from the start. The sizeof operator results in the number of bytes needed to store a particular struct, just as it does for a primitive data type. The alignment of particular fields in the struct (with respect to word boundaries) is implementation-specific and may include padding. Modern compilers typically support the directive, which sets the size in bytes for alignment. The C struct feature was derived from the same-named concept in ALGOL 68.

Declaration

The syntax for a struct declaration is shown by this simple example: The is optional in some contexts.

Typedef

Via the keyword, a struct type can be referenced without using the keyword. However, some programming style guides advise against this, claiming that it can obfuscate the type. For example: In C++ code, typedef is not needed because types defined via are part of the regular namespace, so the type can be referred to as either or.

Initialization

There are three ways to initialize a structure. For the type: C89-style initializers are used when contiguous members may be given. For example: For non contiguous or out of order members list, designated initializer style may be used. For example: If an initializer is given or if the object is statically allocated, omitted elements are initialized to 0. A third way of initializing a structure is to copy the value of an existing object of the same type. For example:

Copy

The state of a struct can be copied to another instance. A compiler might use to copy the bytes of the memory block.

Pointers

Pointers can be used to refer to a by its address. This is useful for passing a struct to a function to avoid the overhead of copying the struct. The operator dereferences the pointer (left operand) and accesses the value of a struct member (right operand).

In other languages

C++

In C++, struct is essentially the same as for C. Further, a class is the same as a struct but with different default visibility: class members are private by default, whereas struct members are public by default.

.NET

.NET languages have a feature similar to struct in C called in C# and in Visual Basic .NET). This construct provides many features of a class, but acts as a value type instead of a reference type. For example, when passing a .NET struct to a function, the value is copied so that changes to the input parameter do not affect the value passed in.

This article is derived from Wikipedia and licensed under CC BY-SA 4.0. View the original article.

Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc.
Bliptext is not affiliated with or endorsed by Wikipedia or the Wikimedia Foundation.

Edit article