Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Created July 16, 2015 21:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Fhernd/1fbe10aae1efe4fc0923 to your computer and use it in GitHub Desktop.
Save Fhernd/1fbe10aae1efe4fc0923 to your computer and use it in GitHub Desktop.
Uso de punteros en C#. Ejemplo básico.
// OrtizOL - xCSw - http://ortizol.blogspot.com
using System;
public class BasicosPunteros
{
public static void Main()
{
Console.WriteLine(Environment.NewLine);
// Declaración de un arreglo de enteros como objetos
// (managed code):
int[] arreglo = new int[5] {100, 200, 300, 400, 500};
// El uso de punteros requiere marcar la siguiente
// region con la palabra clave unsafe:
unsafe
{
// Evita que el colector de basura relocalice una variable
// desplazable:
fixed(int* puntero1 = &arreglo[0])
{
// Creación de un nuevo puntero para incrementar la ubicación de memoria:
int* puntero2 = puntero1;
// Muestra el valor de la memoria apuntada por `puntero2`:
Console.WriteLine(*puntero2);
// Incrementa en 1 la región de memoria apuntada por `puntero2`:
puntero2 += 1;
// Se muestra el valor del segundo elemento de `arreglo`:
Console.WriteLine(*puntero2);
// Incrementa en 1 la región de memoria apuntada por `puntero2`:
puntero2 += 1;
// Se muestra el valor del tercer elemento de `arreglo`:
Console.WriteLine(*puntero2);
Console.WriteLine("-----------");
// Se muestra el valor actual apuntado por `puntero1`:
Console.WriteLine(*puntero1);
// Incrementa en una unidad el valor de la región de memoria
// apuntada por `puntero1`:
*puntero1 += 1;
// Muestra el valor del primer elemento de `arreglo`:
Console.WriteLine(*puntero1);
// Incrementa en una unidad el valor de la región de memoria
// apuntada por `puntero1`:
*puntero1 += 1;
// Muestra el valor del primer elemento de `arreglo`:
Console.WriteLine(*puntero1);
}
}
Console.WriteLine(Environment.NewLine);
Console.WriteLine("-----------");
// Por fuera de la región de código inseguro:
Console.WriteLine(arreglo[0]);
Console.WriteLine(Environment.NewLine);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment