Struct
Struct can be regarded as a combination of series of member elements.
It can be regarded as a custom data type.
The struct
described on this page is different from the struct
in C. In C++, the definition of struct
has expanded to a class specifier like class
.
Define struct¶
struct Object {
int weight;
int value;
} e[array_length];
const Object a;
Object b, B[array_length], tmp;
Object *c;
In the above example, a structure named Object
is defined. It has two member elements value, weight
with int
types.
After }
, a constant a
with a type of Object
, a variable b
, a variable tmp
, an array B
, and a pointer c
are defined. For an existing type, you can use the methods here to define constants, variables, pointers, arrays, etc.
Note: it is NOT mandatory to master pointers.
Define pointers¶
If it's a pointer that defines a built-in type, it is the same as the usual definition of a pointer.
If it's to define a structure pointer, using StructName*
in the definition is required.
struct Edge {
/*
...
*/
Edge* nxt;
};
The above code is for example only, there's no need to worry about the actual meaning.
Access/modify member elements¶
You can use variable_name.member_element_name
for access (the double quotes are not written into the program, the same applies below).
For example: output member v
of var
: cout << var.v
.
You can also use pointer_name->member_element_name
or use (*pointer_name).member_element_name
for access.
For example: assign the member element v
of the struct pointed to by the struct pointer ptr
to tmp
: (*ptr).v = tmp
or ptr->v = tmp
.
Why do we need struct?¶
First of all, it is NOT mandatory. All roads lead to Rome, and same effect can be achieved without using structs. But struct can explicitly bind the member elements (usually variables in OIs) together. For example, the Object
struct above puts the value, weight
together (The actual meaning of defining this struct is to represent the weight and value of an item). The advantage of this is that it limits the use of member elements.
Imagine if you don't use a struct and there are two arrays value[],Value[]
, it is easy to cause confusion. But if you do, you can reduce the chance of using variables incorrectly.
And different structs (struct types, such as the Object
structure) or different struct variables (instances of the struct, such as the e
array above) can have member elements with the same name (such as tmp. value,b.value
), and the member elements with the same name are independent of each other. This means they have seperate memory. For example, modifying tmp.value
will not affect the value of b.value
.
The advantage of this is that we can use the same or similar variables as mcuh as possible to describe an item. For example, there is a member variable of value
in Object
; we can also define a Car
struct, which also has a member of value
; But if we do not use a struct, the definition of valueOfObject[], valueOfCar[]
and other arrays with different names may be required.
If you want to describe an item in more details, you can also use a member function. Please refer to Class for details.
More operations?¶
For more details, please refer to class.
References¶
build本页面最近更新:,更新历史
edit发现错误?想一起完善? 在 GitHub 上编辑此页!
people本页面贡献者:Ir1d, cjsoft, Lans1ot
copyright本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用