🌱 Digital Garden

Search

Search IconIcon to open search

Last updated Jul 20, 2023 Edit Source

Quizas ver primero: Hexadecimal Memoria RAM


# Pointers en C

Pass by value se refiere a que pasamos copias del valor de una variable, no la variable con el valor en si, por tanto, si pasamos esto a una funcion, no afectara realmente a nuestras variables fuera de esa funcion.

Los pointers nos permiten pasar las variables por referencia, esto es lo contrario a lo anterior y por tanto, si realizamos cambios a un pointer, haremos cambios en todo el programa.

Un pointer es una referencia a un espacio en memoria (una direccion), estos espacios pueden contener datos o estar vacios e incluso ser inexistentes.

Si un pointer no apunta a ningun espacio en memoria (inexistente o NULL) y es utilizado, causara Segmentation Fault en nuestro Software, esto es una buena señal, debido a que Segmentation Fault es una proteccion para no tocar memoria de programas que no deberiamos. Por eso es buena practica que, al definir punteros, los definamos como NULL.

Por tanto, entendamos que un Pointer esta compuesto (como cualquier variable en cualquier lenguaje) por dos partes:

Cabe aclarar que los arrays[] son pointers en si mismos, siempre son pasados por referencia a las funciones y por tanto, sus valores pueden cambiar aun fuera del scope de una funcion.

# Usar pointers en C

Para trabajar con pointers tenemos simbolos nuevos:

1
2
3
4
5
6
7
8
int main (void)
{
	char *nombre = "Jaime"; // Creamos un pointer de char hacia un array de caracteres. Por tanto, apuntara al primer caracter. 
	int number = 3;

	printf("Espacio en memoria 1: %p", nombre) // Pointer al primer caracter del array, 'J'.
	printf("Espacio en memoria 2: %p", &number) // Pointer de number
}

Siguiente: