Variables

Oct 17, 2019 at 8:56pm
Could someone explain what a variable is in depth, Ive read a lot of articles but none of them explained it in depth, maybe even send a link. Thanks.
Oct 17, 2019 at 9:10pm
There is no depth to them. The concept of a variable is very simple. What don't you understand?
Oct 17, 2019 at 9:34pm
What are they? I understand they’re named objects which store a value depending on their type specifier(operation also depends on type) and their size(depends on complier). What I don’t get is why they’re called objects and how they’re created within the memory location.
Last edited on Oct 17, 2019 at 9:35pm
Oct 17, 2019 at 9:51pm
They're called "objects" because an object is a distinct thing that has an existence.

how they’re created within the memory location.

Memory is just numbers. We decide we want an int. We decide it will take up four bytes. We say "these four bytes here; they're one single int object". Done. That's all that happens. We just keep track of which lumps of memory represent our objects.
Last edited on Oct 17, 2019 at 9:53pm
Oct 17, 2019 at 10:00pm
Makes sense, why does an object require an identifier to be considered a variable and not both a type specifier and identifier?
Oct 17, 2019 at 10:06pm
Where are you getting these questions?
Oct 17, 2019 at 10:12pm
Well from myself but it says in a book written in a book, “A variable is a named object” I didn’t get why.
Oct 17, 2019 at 10:18pm
Why what?

It sounds like you're asking questions like "why is an elephant called an elephant?". We have to agree common terms to be able to understand each other. We agree what a variable is so that when we talk about variables, we understand each other,. It's how language works; we have words that mean things.
Oct 17, 2019 at 10:31pm
My bad, why are variables referred to as “a named object” even though you can’t declare a variable without a type specifier, hopefully you understand what I’m trying and failing to say.
Oct 17, 2019 at 11:24pm
Well, a variable is (or if you prefer, represents, identifies) an object, and it has a name, so it's a named object.

I don't know what not being able to declare a variable without a type specifier has to do with it.
Last edited on Oct 17, 2019 at 11:27pm
Oct 17, 2019 at 11:44pm
Maybe this might help:
Because C++ is a strongly typed language, every object must be some type.
But not every object is necessarily a named variable.
If I write my_func(42); 42 is an int, but it wouldn't be called a "variable" by most because it doesn't have a name. It's only a temporary object that will be copied into the function (where it then will have a name),
e.g. void my_func(int a) { /* ... */ };
Last edited on Oct 17, 2019 at 11:45pm
Oct 18, 2019 at 12:27am
The compiler reads language objects which is what represents a physical item or digital context, it translates code in other programs for further interpretation. The written program is basically an input for the compiler. The compiler is also coded as objects its self and in variables. Variable are the storage holders for specific arguments which affects how a program runs.

Variables are used to hold numbers, text, data, etc.

Variables have different types (type specifiers) for different purposes when holding data. e.g;
1
2
3
int age = 92; 
string name = "john doe";
float payCheck = 1024.37;


Variables are able to become assigned with specific property values, they can hold other variables. They help reveal results based on mathematical expressions through conditions and as logic. They can be used to keep track of a programs statistics, keep track of scores, make other code dependent on variable(s) for different scenarios.

One is able to name a variable anything they want and is usually based on the expression of the overall meaning and intention of the developed program.
Oct 18, 2019 at 1:00am
Oct 18, 2019 at 3:18am
a variable is like the idea in math. Consider y= f(x); x is a variable, and it can change, and as it changes, your results change (y). A variable is different from a constant which has a fixed value that can't be modified without hackery (constants live in memory too and can be hacked but the compiler won't allow you to do it directly). The idea of a constant vs variable is in the compiler, not the computer: the computer doesn't know the difference down in the bits and bytes.

Inside a computer, a variable is just a piece of memory (a register, a block of ram, etc). Inside that piece of memory are bytes. the state of those bytes represent data that you can interpret back into something meaningful to your program. Maybe it is a character in ascii or Unicode, maybe its a double or integer, maybe its class of type alien zombie. Class/struct and such type variables are a block of memory where inside that block are smaller variables of more basic types, but the idea is the same, its still memory made of bytes that contain data.

As you express your ideas in the language, you tell the computer directly or indirectly what those bytes mean. Maybe you say int x, telling the computer its an integer of a known size (int varies across systems but for your system, its a fixed size) and the cpu has a branch of circuits that do integer things (multiply, add, xor, etc). Maybe its a double and the FPU will handle it. The compiler routs the bytes to the CPU integer or FPU double areas for you, because you told it what to do when you typed it.
Last edited on Oct 18, 2019 at 3:20am
Oct 18, 2019 at 3:37am
A named variable has a name that is introduced into the program by the declaration of an object (or a reference).
In the program, the name of the variable denotes the object (or reference).

1
2
int i = 9 ; // variable i denotes an object (of type int)
int& r = i ; // variable j is an alias for the object (reference to object of type int) 
Oct 18, 2019 at 5:16am
Maybe a good analogy is think of a variable/object as a room.
I named the space or object that can hold people a "room" . In Spanish, that space is called "cuarto". In french, it is called "chambre". No matter the name is you are naming the same object.
A room can be single room, double room etc. because rooms have different sizes.
Last edited on Oct 18, 2019 at 5:31am
Oct 18, 2019 at 1:32pm
why does an object require an identifier to be considered a variable and not both a type specifier and identifier?

It does require both a type specifier and identifier:

1
2
int a;    // int is the type specifier and "a" is the name
string s; // string is the type specifier and "s" is the name 


I think the point that your book (or whatever you're reading) is really trying to make is that not all objects in a program are variables. Sometimes there are temporary objects that get created and destroyed as Ganado showed. You can also create unnamed objects on the heap with new. Invariably, when the program creates an object with new, it assigns the object's address to some pointer variable so that the program can refer to it. In that case, the pointer variable contains the address, but the object itself remains unnamed:

int *p = new int(4); // variable p contains the address of the anonymous int created by new
Topic archived. No new replies allowed.