Podemos pensar na memória do computador como sendo uma coleção enorme de pequenas ‘gavetas’. Neste post veja variáveis em C e C++.
Cada uma dessas ‘gavetas’ é numerada sequencialmente e representa um byte. Esse número sequencial é conhecido como endereço de memória.
Uma variável reserva uma ou mais ‘gavetas’ para armazenar um determinado valor.
O nome da variável é um rótulo que se refere a uma das gavetas. Isso facilita a localização e o uso dos endereços de memória.
Uma variável pode começar em um determinado endereço e estender-se por várias gavetas, ou vários bytes, subsequentes.
Quando definimos uma variável em C++, precisamos informar ao compilador o tipo da variável: um número inteiro, um número de ponto flutuante, um caractere, e assim por diante.
Essa informação diz ao compilador quanto espaço deve ser reservado para a variável, e o tipo de valor que será armazenado nela:
Dissemos que cada gaveta corresponde a um byte. Se a variável for de um tipo que ocupa dois bytes, precisaremos de dois bytes de memória, ou duas gavetas.
Portanto, é o tipo da variável (por exemplo, int) que informa ao compilador quanta memória deve ser reservada para ela.
Em um determinado tipo de computador/sistema operacional, cada tipo de variável ocupa um número de bytes definido e invariável.
Ou seja, uma variável int pode ocupar dois bytes em um tipo de máquina (por exemplo, no MS-DOS), quatro bytes em outro tipo de máquina (por exemplo, no Windows 95), e assim por diante.
O C++ oferece um operador, chamado sizeof, que nos permite determinar o tamanho em bytes de um tipo de dados ou de uma variável.
Exemplo:
#include <iostream>
using namespace std;
int main() {
cout << "*** Tamanhos das variaveis ***\n";
cout << "Tamanho de int = "
<< sizeof(int)
<< " bytes.\n";
cout << "Tamanho de short int = "
<< sizeof(short)
<< " bytes.\n";
cout << "Tamanho de bool = "
<< sizeof(bool)
<< " bytes.\n";
cout << "Tamanho de char = "
<< sizeof(char)
<< " bytes.\n";
return 0;
}
Atribuindo valores às variáveis
Para criar uma variável, precisamos declarar o seu tipo, seguido pelo nome da variável e por um caractere de ponto e vírgula:
int larg;
larg = 10;
Variáveis UNSIGNED
Em C++, os tipos inteiros existem em duas variedades: signed (com sinal) e unsigned (sem sinal).
A ideia é que, às vezes é necessário poder trabalhar com valores negativos e positivos; outras vezes, os valores são somente positivos.
Os tipos inteiros (short, int e long), quando não são precedidos pela palavra unsigned sempre podem assumir valores negativos ou positivos. Os valores unsigned são sempre positivos ou iguais a zero.
Como o mesmo número de bytes é utilizado para os inteiros signed e unsigned, o maior número que pode ser armazenado em um inteiro unsigned é o dobro do maior número positivo que pode ser armazenado em um inteiro signed.
Veja abaixo a tabela de valores de uma implementação típica de C++:
Sequência | Bytes ocupados | Faixa (ou intervalo) |
---|---|---|
short int signed int signed short int wchat_t signed wchar_t | 2 | -32.768 a 32.767 |
unsigned short int unsigned wchar_t | 2 | 0 a 65.535 |
int long int signed long int | 4 | -2.147.483.648 até 2.147.483.647 |
unsigned int unsigned long int | 4 | 0 a 4.294.967.295 |
char signed char | 1 | -128 a 127 |
unsigned char | 1 | 0 a 255 |
bool | 1 | true ou false |
float | 4 | 1,2e-38 a 3,4e+38 |
double long float | 8 | 2,2e-308 a 1,8e+308 |
Variáveis locais e globais
Além de podermos passar variáveis para uma função, na forma de argumentos, podemos também declarar variáveis dentro do corpo da função.
Essas variáveis são chamadas locais, porque somente existem localmente, dentro da função. Quando a função retorna, a variável deixa de existir.
As variáveis locais são definidas da mesma forma que as outras variáveis. Os parâmetros da função são também considerados variáveis locais, e podem ser usados exatamente como se tivessem sido definidos dentro do corpo da função.
As variáveis globais são declaradas da mesma forma que uma variável local – primeiro o tipo, depois o nome da variável. Mas a diferença é que esta variável é declarada fora de qualquer função.
Por convenção, geralmente, utilizamos um underline (_) no começo do nome da variável para facilitar a leitura do programa e facilmente percebermos de que se trata de uma variável global.
Variáveis globais podem ser utilizadas por qualquer função. E qualquer função pode alterar o valor, utilizá-la em um processo ou até mesmo atribuir o valor que quiser.
Exemplo:
#include <iostream>
#include <cstdlib>
using namespace std;
int _iniciado=0; //variável global começa em 0
void start (void) {
_iniciado++;
}
int main (void){
start (); //chamando a função start
int x=0, opcao; // variáveis locais, apenas a função MAIN pode utilizar
x++;
cout << "Este programa foi iniciado "<<_iniciado<<" vez(es)";
cout << "\nO valor de X e "<<x;
cout << "\n\nDeseja reiniciar o programa?\n1.\t\tSIM\nOutro numero\tNAO\n";
cin >> opcao;
cin.ignore ();
if (opcao==1) {
main (); //reiniciar o programa
return 0;
}
Aprenda através de projetos reais e aulas práticas. São 20 cursos completos + cursos bônus. Grupos privados exclusivos, atualizações constantes e lives semanais.
Python, PHP, Java Script, CSS, Node, Angular JS, MySQL, Photoshop, Flutter, AWS, Apache e muito mais!
CLIQUE NA IMAGEM ABAIXO E CONFIRA MAIS DETALHES:
Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits
Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?
Sobre o Autor
0 Comentários