Difference Between Struct and Typedef Struct in C++
Last Updated :
23 May, 2024
In C++, the struct keyword is used to define a struct, whereas the typedef keyword is used for creating an alias(new name) for existing datatypes and user-defined datatypes like class, struct, and union to give them more meaningful names. In this article, we will learn the differences between a struct and a typedef struct in C++.
Struct in C++
The struct keyword in C++ is used to define a structure. A structure is a user-defined composite data type that allows us to combine data of different data types together under a single name.
Syntax to Define a Struct
struct StructName {
data_type member_name1;
data_type member_name2;
};
Here,
- StructName is the name of the structure.
- member_name are the members (variables or functions) of the structure.
Example
The below example demonstrates the use of structure in C++.
C++
// C++ program to use struct in C++
#include <iostream>
using namespace std;
// define a struct MyStruct
struct MyStruct {
int num;
void increase() { num += 5; }
};
int main()
{
// create object of MyStruct
struct MyStruct obj;
// access variable using dot operator
obj.num = 5;
// access member function using dot operator
obj.increase();
// printing the value of num
cout << "Number is: " << obj.num;
}
Typedef Struct in C++
The typedef struct in C++ is used to define a structure and create an alias for it. This allows us to use the alias instead of the struct keyword when defining variables of the structure type.
Syntax to Define a Typedef Struct
typedef struct {
// members
} AliasName;
Here,
- AliasName is the alias name for the structure.
- members are the variables or functions of the structure.
Example
The below example demonstrates the use of typedef struct in C++.
C++
// C++ program to use typedef struct in C++
#include <iostream>
using namespace std;
// define a typedef struct MyStruct
typedef struct {
int num;
void increase() { num += 5; }
} MyStruct;
int main() {
// create object of MyStruct
MyStruct obj;
// access variable using dot operator
obj.num = 5;
// access member function using dot operator
obj.increase();
// printing the value of num
cout << "Number is: " << obj.num;
}
Difference Between Struct and Typedef Struct in C++
The below table demonstrates the key differences between struct and typedef struct in C++ are:
Feature
| Struct
| Typedef Struct
|
---|
Definition
| Used to define a structure with the struct keyword. | Used to define a structure and create an alias for it. |
---|
Syntax
| struct StructName { members };
| typedef struct { members } AliasName;
|
---|
Instantiation
| Requires 'struct' keyword for declaration and instantiation.
| Does not require 'struct' keyword when declaring objects of the type.
|
---|
Purpose
| Groups together different data types into a single unit.
| Simplifies the syntax for using the structure, reducing code verbosity.
|
---|
Usage of Aliases
| Cannot directly create an alias for the type name
| Allows creating an alias for the type name, improving code readability
|
---|
Additional Typedefs
| Cannot create multiple typedefs for the same struct
| Can create multiple typedefs for the same struct, providing flexibility in naming
|
---|
Conclusion
In conclusion, the choice between struct and typedef struct in C++ depends on whether we want to use the struct keyword every time we define a variable of the structure type. If we want to avoid this, we can use typedef struct to create an alias for the structure.
Similar Reads
Difference Between int and size_t in C++ In C++, both int and size_t are very important data types that are used to represent integers. However, there are some key differences between them that the users should be aware of. In this article, we will learn the differences between int and size_t in C++. Integer Data Type in C++The int data ty
4 min read
Difference Between Pointers and Array Notations in C++ In C++, pointers and array notations are two ways using which we work with arrays and memory for accessing the data. They have distinct behaviours and are used in different contexts. In this article, we will learn the key differences between pointers and array notations in C++. Difference Between Po
4 min read
Difference between Containership and Inheritance in C++ Containership: When an object of one class is created into another class then that object will be a member of that class, this type of relationship between the classes is known as containership or has_a relationship as one class contains the object of another class. The class which contains the obje
4 min read
How to Create an Array of Structs in C++? In C++, a struct is a user-defined data type that allows us to combine data of different types and an array of structs is an array in which each element is of the struct type. In this article, we will learn how to create an array of structs in C++. Creating an Array of Structs in C++To create an arr
2 min read
<type_traits> Header in C++ The <type_traits> header in C++ is a part of the metaprogramming library introduced in C++ 11. It is a collection of tools to help our code work with different data types. It contains Helper Classes which are standard classes that assist in creating compile-time constants, Type Traits, classes
7 min read
boost is_pointer template in C++ The is_pointer template of Boost library is used to check whether the given type is a pointer or not. It returns a boolean value showing the same. Header Files: #include "boost/type_traits.hpp" or #include "boost/type_traits/is_pointer.hpp" Template Class: template <class T> struct is_pointer
3 min read