Created
July 16, 2015 21:39
-
-
Save Fhernd/1fbe10aae1efe4fc0923 to your computer and use it in GitHub Desktop.
Uso de punteros en C#. Ejemplo básico.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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