- Documentación
Introducción a C
C es un lenguaje de programación desarrollado en el año 1972 por Dennis Ritchie. El lenguaje C es un lenguaje estructurado el cual a pesar de ser un lenguaje de “alto nivel”, da acceso a hacer uso de la memoria, registros, etc.
Compilación
C es un lenguaje compilado; se compila una vez para cada arquitectura y se genera un binario que se puede ejecutar directamente. Para poder compilar y ejecutar un archivo llamado hello.c
, se realiza de la siguiente manera:
#include <stdio.h>
int main() {
printf("Hello World!\n");
return 0;
}
gcc hello.c
./a.out
Hello World!
Notese que el compilador que estamos utilizando se llama gcc
. gcc
se encuentra por defecto en la mayoria de sistemas operativos con kernel linux. Cuando nosotros no especificamos un nombre para el archivo de salida, gcc lo nombra, por defecto, a.out
.
Si queremos especificar un nombre para el archivo de salida entonces podemos utilizar la bandera -o
:
gcc -o hello hello.c
./hello
Hello World!
Comentarios en C
Los comentarios en C se pueden hacer de dos maneras:
// Este es un comentario de una sola línea
/*
Este es un comentario de múltiples líneas
*/
Tipos de datos
En C
, las variables deben ser declaradas antes de ser utilizadas, y su tipo no puede cambiar una vez asignado. Además, el tamaño de las variables depende de la arquitectura del sistema en el que se esté trabajando (por ejemplo, x86, x86_64, ARM, RISC-V, etc).
A diferencia de lenguajes como Java
, en C
las variables no se inicializan automáticamente. Esto significa que, al declararse, una variable contendrá lo que se conoce como “valor basura”, es decir, los datos que estaban previamente en la dirección de memoria donde se ha almacenado la variable.
int i; // Variable entera no inicializada
int j = 10; // Variable entera inicializada
Constantes
En C
, una constante es un valor fijo que no puede ser modificado durante la ejecución del programa. A diferencia de las variables, cuyo valor puede cambiar, una constante mantiene su valor constante a lo largo del programa.
Constantes literales
Son los valores que se escriben directamente en el código, como números enteros (10
), números de punto flotante (3.14
), caracteres ('A'
) o cadenas de texto ("Hola"
). Estos valores son constantes por naturaleza.
Constantes #define
Se utilizan para definir valores constantes que se pueden usar en varias partes del código. El preprocesador reemplaza cada instancia del nombre de la constante con su valor definido. Su sintaxis es la siguiente:
#define NOMBRE_CONSTANTE valor
Ejemplo:
#define PI 3.14159
Constantes const
En lugar de usar #define
, también se pueden declarar constantes dentro del código utilizando la palabra clave const
. La diferencia principal con #define
es que las constantes definidas con const
tienen un tipo de dato asociado, lo que permite aprovechar las comprobaciones de tipo en tiempo de compilación. Su sintaxis es la siguiente:
const tipo nombre = valor;
Ejemplo:
const double PI = 3.14159;
En este caso, PI
es una constante de tipo double
cuyo valor no podrá ser modificado.
Booleans
Es un importante mencionar que en C
, las variables tipo booleanas no existen. En vez de eso, todo valor diferente de 0
se considera verdadero, es decir si se desea representar el valor falso se debe utilizar un 0
.
#include <stdio.h>
#define SHOW 1
int main() {
// Si SHOW es verdadero, entonces se imprime "Hello World!"
if (SHOW) {
printf("Hello World!\n");
}
return 0;
}
Funciones
En C
, una función es un bloque de código diseñado para realizar una tarea específica. Las funciones permiten dividir el código en partes más pequeñas, lo que facilita su reutilización, mantenimiento y organización.
Estructura de una función
Una función en C
tiene, generalmente, tres partes principales:
- Tipo de retorno: Especifica el tipo de dato que la función devolverá como resultado. Si la función no devuelve ningún valor, se utiliza la palabra clave
void
. - Nombre de la función: Es el identificador que se utilizará para llamar a la función desde otras partes del código.
- Parámetros: Son los valores que la función recibe como entrada. Pueden ser de cualquier tipo de dato y se utilizan para que la función pueda realizar su tarea.
- Cuerpo de la función: Es el bloque de código que contiene las instrucciones que la función ejecutará cuando sea llamada.
tipo_de_retorno nombre_funcion(tipo_parametro1, tipo_parametro2, ...) {
// Código que realiza la tarea
return valor; // si tiene valor de retorno
}
Ejemplo
#include <stdio.h>
// Declaración de la función
int sum(int a, int b);
int main() {
int result = sum(5, 3); // Llamada a la función
printf("El resultado de la suma es: %d\n", result);
return 0;
}
// Definición de la función
int sum(int a, int b) {
return a + b; // Devuelve la suma de a y b
}