⚡ C Desde Cero - Guía Completa

Aprende C desde los fundamentos hasta conceptos avanzados

"C is a general-purpose programming language created by Dennis Ritchie at Bell Labs."
Explorar Temas

📖 Temas del Curso

Haz clic en cualquier tema para ver el contenido detallado

📌 Introducción a C

C es un lenguaje de programación de propósito general creado por Dennis Ritchie en Bell Labs en 1972.

Características:

  • Programación estructurada
  • Acceso directo a memoria
  • Código portable
  • Alto rendimiento
💡 Dato curioso: C fue creado para desarrollar el sistema operativo Unix.
← Volver a temas

🔧 Instalación GCC

En Windows:

# Instalar MinGW o MSYS2
# Descargar desde mingw-w64.org

En Linux:

sudo apt-get install gcc
sudo yum install gcc

En macOS:

xcode-select --install
← Volver a temas

👋 Hola Mundo

#include <stdio.h>

int main() {
    printf("Hola Mundo!\n");
    return 0;
}

Compilar y ejecutar:

gcc hola.c -o hola
./hola
← Volver a temas

📦 Variables y Tipos

#include <stdio.h>

int main() {
    int edad = 30;
    float altura = 1.75f;
    double pi = 3.14159265;
    char inicial = 'J';
    
    printf("Edad: %d\n", edad);
    printf("Altura: %.2f\n", altura);
    return 0;
}
← Volver a temas

🔗 Punteros

int valor = 42;
int* ptr = &valor;

printf("Valor: %d\n", valor);
printf("Dirección: %p\n", (void*)&valor);
printf("Valor via ptr: %d\n", *ptr);
⚠️ Importante: Los punteros permiten acceso directo a memoria.
← Volver a temas

📚 Arrays y Strings

// Array
int numeros[5] = {1, 2, 3, 4, 5};

// String
char nombre[] = "Juan";
char saludo[50];

strcpy(saludo, "Hola ");
strcat(saludo, nombre);
printf("%s\n", saludo);
← Volver a temas

🏗️ Structs

typedef struct {
    char nombre[50];
    int edad;
    float altura;
} Persona;

Persona p1;
strcpy(p1.nombre, "Juan");
p1.edad = 30;

printf("%s tiene %d años\n", p1.nombre, p1.edad);
← Volver a temas

💾 Manejo de Memoria

#include <stdlib.h>

// malloc
int* array = (int*)malloc(10 * sizeof(int));

// Usar memoria
for (int i = 0; i < 10; i++) {
    array[i] = i;
}

// free
free(array);
array = NULL;
⚠️ Importante: Siempre libera memoria asignada con malloc.
← Volver a temas

📁 Archivos

// Escribir
FILE* archivo = fopen("datos.txt", "w");
if (archivo != NULL) {
    fprintf(archivo, "Hola Archivo\n");
    fclose(archivo);
}

// Leer
archivo = fopen("datos.txt", "r");
char linea[100];
while (fgets(linea, sizeof(linea), archivo) != NULL) {
    printf("%s", linea);
}
fclose(archivo);
← Volver a temas

🔧 Funciones Avanzadas

// Función con puntero
void modificar(int* valor) {
    *valor = 100;
}

// Función que retorna puntero
int* crearArray(int size) {
    return (int*)malloc(size * sizeof(int));
}

// Funciones variádicas
int sumar(int count, ...) {
    va_list args;
    va_start(args, count);
    // procesar argumentos
    va_end(args);
}
← Volver a temas

📋 Makefiles

CC = gcc
CFLAGS = -Wall -g
TARGET = mi_programa

all: $(TARGET)

$(TARGET): main.o utils.o
	$(CC) $(CFLAGS) -o $(TARGET) main.o utils.o

main.o: main.c
	$(CC) $(CFLAGS) -c main.c

clean:
	rm -f *.o $(TARGET)

Usar make:

make      # Compilar
make clean # Limpiar
← Volver a temas

🐛 Debugging con GDB

Compilar con debug:

gcc -g programa.c -o programa

Comandos GDB:

gdb ./programa      # Iniciar
break main          # Breakpoint
run                 # Ejecutar
next                # Siguiente línea
print variable      # Ver variable
continue            # Continuar
quit                # Salir
← Volver a temas

📚 Contenido del Curso

Módulo 1: Fundamentos

  • Introducción a C
  • Instalación GCC
  • Hola Mundo
  • Variables y tipos
Ir a temas →

Módulo 2: Intermedio

  • Punteros
  • Arrays y strings
  • Structs
  • Manejo de memoria
Ir a temas →

Módulo 3: Avanzado

  • Archivos
  • Funciones avanzadas
  • Makefiles
  • Debugging con GDB
Ir a temas →

📝 Ejemplos Rápidos

Hola Mundo

#include <stdio.h>

int main() {
    printf("Hola Mundo!\n");
    return 0;
}

Punteros

int valor = 42;
int* ptr = &valor;
printf("Valor: %d\n", *ptr);

📖 Recursos Adicionales

Documentación Oficial

Herramientas

  • GCC
  • GDB
  • Valgrind

Comunidades

  • Stack Overflow - C
  • Reddit r/C_Programming

👨‍💻 Desarrollado por Isaac Esteban Haro Torres

Ingeniero en Sistemas · Full Stack · Automatización · Data

📧 Email: zackharo1@gmail.com

📱 WhatsApp: 098805517

💻 GitHub: github.com/ieharo1

🌐 Portafolio: ieharo1.github.io/portafolio-isaac.haro/