# 2.3.2 Defining and Accessing Structs

Structs help take the place of some classes by storing related member variables. The main use of a struct is to group similar data together under one variable type.

### Basic Format for Structs

Structs are generally defined to store multiple data elements in a single format. Here is the basic syntax for a struct.

```
struct structName {
    memberType1 memberName1;
    memberType2 memberName2;
};
```

There are several things to notice about the definition. First, the definition begins by using the key word `struct`. After that, the name of the struct is given. In this course, you will see structs names starting in lowercase letters and using camel case.

After the name is a set of curly brackets and inside of these you will see the different data types and variable names.

One thing to notice is that the struct definition ends with a curly bracket and a semicolon, `;`. The semicolon is critical.

Structs are typically defined at the top of the program and need to be defined before they can be used.

### Example: Student struct

Let’s take a look at a specific example. If you wanted to create a student struct that can store the student’s name and their grade, it would look like this:

```
struct student{
    string name;
    int grade;
};
```

Notice in this example that it declares two member variables by giving a variable type and a name.

All values and the struct itself are public by default.

### Using a Struct

Once created, you can use a struct like you would use another variable. Access for assignment and updates to the member variables is done through a dot access:

```
structName variable;
variable.memberName1 = value;
variable.memberName2 = value;
```

Using the student struct from above as an example, here is how you would assign and access a member variable.

```
student s;
s.name = "Tracy";
s.grade = 12;

cout << s.name << " is in grade " << s.grade << endl;
```

Notice in the example that the student is declared and then values are defined without having to instantiate any object. Structs behave like a class in Java, but are much quicker and easier to implement. As a result, you will find that you will use structs often in your programming.

### [Try This Example](https://replit.com/@Poston/232-Defining-and-Accessing-Structs#main.cpp)
