Entendiendo las variables en C: Tipos, reglas de nomenclatura y gestión de memoria
Una variable es un nombre dado a un área de almacenamiento que nuestros programas pueden manipular. Cada variable en C tiene un tipo específico, que determina el tamaño y disposición de la memoria; el rango de valores almacenables; y el conjunto de operaciones aplicables.
El nombre de una variable puede componerse de letras, dígitos y guión bajo. Debe comenzar con letra o guión bajo. Mayúsculas y minúsculas son distintas (C es case-sensitive). Según los tipos básicos del capítulo anterior, los tipos básicos de variables son:
| Nº | Tipo y Descripción |
|---|---|
| 1 | char Típicamente un octeto (un byte). Es un tipo entero. |
| 2 | int El tamaño natural de entero para la máquina. |
| 3 | float Valor de punto flotante de precisión simple. |
| 4 | double Valor de punto flotante de doble precisión. |
| 5 | void Representa ausencia de tipo. |
C también permite definir otros tipos (Enumeración, Puntero, Array, Estructura, Unión, etc.) que cubriremos después. Aquí estudiaremos solo tipos básicos.
Definición de variables en C
Una definición de variable indica al compilador dónde y cuánto almacenamiento crear. Especifica un tipo de dato y una lista de variables de ese tipo:
tipo lista_variables;
tipo debe ser un tipo de dato C válido (char, int, float, double, bool, o definido por usuario); lista_variables puede tener uno o más nombres separados por comas. Declaraciones válidas:
int i, j, k; char c, ch; float f, salario; double d;
int i, j, k; declara y define variables i, j, k de tipo int.
Las variables pueden inicializarse en su declaración:
tipo nombre_variable = valor;
Ejemplos:
extern int d = 3, f = 5; // declaración de d y f. int d = 3, f = 5; // definición e inicialización. byte z = 22; // definición e inicialización. char x = 'x'; // variable x tiene valor 'x'.
Sin inicializador: variables con duración de almacenamiento estático se inicializan implícitamente a NULL (bytes a 0); otras variables tienen valor indefinido.
Declaración de variables en C
Una declaración asegura al compilador que existe una variable con ese tipo y nombre, permitiendo compilar sin detalle completo. La definición tiene significado en tiempo de compilación; el compilador necesita la definición real en tiempo de enlace.
Útil cuando usas múltiples archivos y defines la variable en uno, disponible en el enlace. Usa la palabra clave extern para declarar una variable en cualquier lugar. Puedes declarar una variable múltiples veces, pero definirla solo una vez en un archivo, función o bloque.
Ejemplo
Variables declaradas al inicio, definidas e inicializadas dentro de main:
Demo en vivo#include <stdio.h>
// Declaración de variables:
extern int a, b;
extern int c;
extern float f;
int main() {
// Definición de variables:
int a, b;
int c;
float f;
// Inicialización 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;
}
Resultado al compilar y ejecutar:
valor de c : 30 valor de f : 23.333334
Mismo concepto aplica a declaración de funciones: proporcionas nombre en la declaración y definición real en otro lugar.
// declaración de función
int func();
int main() {
int i = func(); // llamada
}
// definición de función
int func() { return 0; }
Lvalues y Rvalues en C
Dos tipos de expresiones en C:
lvalue – Expresiones que se refieren a una ubicación de memoria. Pueden aparecer a la izquierda o derecha de una asignación.
rvalue – Valor de dato almacenado en alguna dirección. No puede tener un valor asignado (no aparece a la izquierda de una asignación).
Las variables son lvalues; los literales numéricos son rvalues. Ejemplos válidos e inválidos:
int g = 20; // válido 10 = 20; // inválido; error en compilación
Lenguaje C
- Domine variables y tipos de datos primitivos en C#: Guía completa
- Entendiendo el ámbito de variables en C#: Nivel de clase, método y bloque
- Dominando Variables, Literales y Constantes en C++: Guía Completa
- Variables, constantes y literales en C: guía completa
- Entendiendo las clases de almacenamiento en C: ámbito, vida y rendimiento
- Variables y tipos de datos en C++: Guía experta sobre int, double, char, string, bool
- Entendiendo las reglas de alcance en C: Variables locales, globales y formales
- Comprender las asignaciones en Verilog: tipos, sintaxis y mejores prácticas
- Dominando la palabra clave global en Python: Cómo y cuándo usarla
- Variables y Literales en Java: Guía Completa
- Entendiendo los Tipos de Variables en Java: Guía Completa