DEV Community

Cover image for Variables, Constants, Data Types, and Namespaces in C++
Kom Senapati
Kom Senapati

Posted on • Updated on

Variables, Constants, Data Types, and Namespaces in C++

hello

Welcome to the second blog of the series "Unlocking C++"!

In this blog, I will discuss variables, constants, data types, and namespaces.

It's the basics required for any programming language.

Let's start with variables.

Variable

Variables are named memory locations used for storing the data.

For high level, it's just like we used to do with maths
2x + 4 = 0
=> x = -2

Variables are of many types.
For C++ variable types can be stated as

  • Global Variable: Any function or class can access The variable declared globally.
  • Local Variable: The local or block-scoped variable can only be accessed within the block. As the block ends, the variable is discarded.
#include <iostream>

int y = 3.14;

int main() {

    { // block
        int x = 5;
        std::cout << x << std::endl;
        std::cout << y << std::endl;
    }

    std::cout << x << std::endl; // gives error 'x' was not declared in this scope
    std::cout << y;
}
Enter fullscreen mode Exit fullscreen mode

Here x is a block-scoped variable so inside the block we can access them but as the block ends it can't be accessed. And y is a global variable so it can be accessed anywhere in the program.

Constants

Constants are also named memory locations used for data storage but their values can't be changed once given.

For example, π.
We know it's a constant and its value will not be changed.

In C we used macros ( #define PI 3.14 ) or manifest constants but constants in C++ are better as they come with type safety.

#include <iostream>

int main() {

    const double pi = 3.14;
    std::cout << pi;

    pi = 4; // error: assignment of read-only variable

}
Enter fullscreen mode Exit fullscreen mode

Here as its const, its value can't be changed.

Another important concept for variables and constants.

Declaration is the statement where the variable is declared without any value. Space is given to a variable as it may be given value in future.

int x;
Enter fullscreen mode Exit fullscreen mode

Initialisation is the statement where we give a value to the variable.

x = 5;
Enter fullscreen mode Exit fullscreen mode

In the case of variables declaration and initialisation can happen in the same line or different lines as well but for constant it must be done in the same line.

Data types

Each variable or constant is associated with a data type. It specifies the type of data stored in the variable.

The primary data types in C++ are:

  • int: store integer values, 2 bytes size (maybe 4 bytes in some systems)
  • long: store integer values but of higher size (4 bytes)
  • float: store decimal numbers, less precision, 4 bytes size
  • double: store decimal numbers, high precision, 8 bytes size
  • char: store a single character, 1 byte size
  • bool: either true(1) or false(0), 1 byte size

Here primary data types mean built-in (predefined) data types to be used by the user directly.

There are Derived and User-defined data types as well.
For now, I am stating them but I will make separate blogs for them in the future.

Derived data types

These are the data types derived from primitive data types.

  • Function
  • Array
  • Pointer
  • Reference

User-defined data types

These data types are created by users to use in the program.

  • struct
  • union
  • class
  • enum
  • typedef

Namespaces

Namespace is a declarative region under which variables, functions, and classes exist. It's used to avoid conflict between the same identifiers.

Identifiers means names given to variables, constants, functions, and classes.

In C++ we have a standard namespace (std) but we can create our namespace as well.

#include <iostream>

namespace apple {
    int x = 1;
}

namespace banana {
    int x = 2;
}

int main() {
    std::cout << apple::x << std::endl; // 1
    std::cout << banana::x; // 2

    return 0;
}
Enter fullscreen mode Exit fullscreen mode

Here the same identifier x is used but in different namespaces.

So this is for this blog. Let's meet in the next blog.

bye

Top comments (0)