Entendendo Variáveis em C: Tipos, Regras de Nomenclatura e Gerenciamento de Memória
Uma variável nada mais é do que um nome dado a uma área de armazenamento que nossos programas podem manipular. Cada variável em C tem um tipo específico, que determina o tamanho e o layout da memória da variária; o intervalo de valores que podem ser armazenados nessa memória; e o conjunto de operações que podem ser aplicadas à variável.
O nome de uma variável pode ser composto por letras, dígitos e o caractere underscore. Deve começar com uma letra ou um underscore. Letras maiúsculas e minúsculas são distintas porque C é case-sensitive. Com base nos tipos básicos explicados no capítulo anterior, haverá os seguintes tipos básicos de variáveis:
| Sr.No. | Tipo & Descrição |
|---|---|
| 1 | char Tipicamente um único octeto (um byte). É um tipo inteiro. |
| 2 | int O tamanho mais natural de inteiro para a máquina. |
| 3 | float Um valor de ponto flutuante de precisão simples. |
| 4 | double Um valor de ponto flutuante de precisão dupla. |
| 5 | void Representa a ausência de tipo. |
A linguagem de programação C também permite definir vários outros tipos de variáveis, que abordaremos em capítulos subsequentes como Enumeração, Ponteiro, Array, Estrutura, União, etc. Para este capítulo, vamos estudar apenas os tipos básicos de variáveis.
Definição de Variável em C
Uma definição de variável diz ao compilador onde e quanto armazenamento criar para a variável. Uma definição de variável especifica um tipo de dado e contém uma lista de uma ou mais variáveis desse tipo da seguinte forma:
type variable_list;
Aqui, type deve ser um tipo de dado C válido incluindo char, w_char, int, float, double, bool, ou qualquer objeto definido pelo usuário; e variable_list pode consistir em um ou mais nomes de identificadores separados por vírgulas. Algumas declarações válidas são mostradas aqui:
int i, j, k; char c, ch; float f, salary; double d;
A linha int i, j, k; declara e define as variáveis i, j e k; que instruem o compilador a criar variáveis chamadas i, j e k do tipo int.
Variáveis podem ser inicializadas (atribuído um valor inicial) em sua declaração. O inicializador consiste em um sinal de igual seguido por uma expressão constante da seguinte forma:
type variable_name = value;
Alguns exemplos são:
extern int d = 3, f = 5; // declaração de d e f. int d = 3, f = 5; // definição e inicialização de d e f. byte z = 22; // definição e inicializa z. char x = 'x'; // a variável x tem o valor 'x'.
Para definição sem um inicializador: variáveis com duração de armazenamento estático são implicitamente inicializadas com NULL (todos os bytes têm o valor 0); o valor inicial de todas as outras variáveis é indefinido.
Declaração de Variável em C
Uma declaração de variável fornece garantia ao compilador de que existe uma variável com o tipo e nome dados, para que o compilador possa prosseguir para compilação adicional sem exigir o detalhe completo sobre a variável. Uma definição de variável tem seu significado no momento da compilação apenas, o compilador precisa da definição real da variável no momento da ligação do programa.
Uma declaração de variável é útil quando você está usando múltiplos arquivos e define sua variável em um dos arquivos que estará disponível no momento da ligação do programa. Você usará a palavra-chave extern para declarar uma variável em qualquer lugar. Embora você possa declarar uma variável várias vezes no seu programa C, ela pode ser definida apenas uma vez em um arquivo, uma função ou um bloco de código.
Exemplo
Tente o seguinte exemplo, onde as variáveis foram declaradas no topo, mas foram definidas e inicializadas dentro da função main:
Live Demo#include <stdio.h>
// Declaração de variável:
extern int a, b;
extern int c;
extern float f;
int main() {
/* definição de variável: */
int a, b;
int c;
float f;
/* inicialização real */
a = 10;
b = 20;
c = a + b;
printf("valor de c : %d \n", c);
f = 70.0/3.0;
printf("valor de f : %f \n", f);
return 0;
}
Quando o código acima é compilado e executado, produz o seguinte resultado:
valor de c : 30 valor de f : 23.333334
O mesmo conceito se aplica à declaração de função onde você fornece um nome de função no momento de sua declaração e sua definição real pode ser dada em qualquer outro lugar. Por exemplo:
// declaração de função
int func();
int main() {
// chamada de função
int i = func();
}
// definição de função
int func() {
return 0;
}
Lvalues e Rvalues em C
Existem dois tipos de expressões em C:
lvalue - Expressões que se referem a uma localização de memória são chamadas de expressões "lvalue". Um lvalue pode aparecer como lado esquerdo ou direito de uma atribuição.
rvalue - O termo rvalue refere-se a um valor de dado que é armazenado em algum endereço na memória. Um rvalue é uma expressão que não pode ter um valor atribuído a ela, o que significa que um rvalue pode aparecer no lado direito, mas não no lado esquerdo de uma atribuição.
Variáveis são lvalues e, portanto, podem aparecer no lado esquerdo de uma atribuição. Literais numéricos são rvalues e, portanto, não podem ser atribuídos e não podem aparecer no lado esquerdo. Veja as seguintes declarações válidas e inválidas:
int g = 20; // declaração válida 10 = 20; // declaração inválida; geraria erro de compilação
Linguagem C
- Domine Variáveis e Tipos de Dados Primitivos em C#: Guia Completo
- Entendendo Escopo de Variáveis em C#: Níveis de Classe, Método e Bloco
- Dominando Variáveis, Literais e Constantes em C++: Guia Completo
- Variáveis, Constantes e Literais em C: Um Guia Completo
- Entendendo Classes de Armazenamento em C: Escopo, Tempo de Vida e Performance
- Dominando a Palavra-chave Global do Python: Como e Quando Usá-la
- Variáveis e Literais em Java: Guia Completo
- Variáveis e Tipos de Dados em C++: Guia Completo sobre int, double, char, string, bool
- Entendendo Atribuições em Verilog: Tipos, Sintaxe e Boas Práticas
- Entendendo Tipos de Variáveis Java: Um Guia Abrangente