punteros en C#

Resumen

Los punteros son un tipo especial de variables que tiene direcciones de memoria como sus valores. Por ser una variable, aunque de tipo especial, su declaración no varía de gran forma con lo estudiado hasta el momento. Sintaxis:

Pasos para programar con punteros

  • Propiedades del proyecto

  • Habilitar la opción permitir código no seguro.
Con esas dos opciones ya se puede programar el uso de punters



  1. habilitar en en propiedades del proyecto
EjemploDescripción
int* pp es un puntero a un entero
int** pp es un puntero a un puntero o a un entero
int*[] pp es una matriz unidimensional de punteros a enteros
char* pp es un puntero a un valor char
void* pp es un puntero a un tipo desconocido

Ejemplo en C#

using System;

namespace punteros
{
    class Program
    {
        static void Main(string[] args)
        {                     
            unsafe
            {
                int* pi;
                int i, val; //declaraciones de variables i,val y el apuntador pi             
                i = 4; //asignamos un valor para i

                pi = &i; //asignamos la direccion de la variable i en el apuntador pi
                val = *pi; //asignamos el valor del apuntador pi en la variable val

                Console.WriteLine("i= "+i);
                Console.WriteLine("*pi= " + *pi);
                Console.WriteLine("val= " + val);
                Console.WriteLine(" {0:X2}",(int)pi);
                Console.ReadLine();
            }
            Console.ReadKey();

        }
    }
}

ejemplo 2

using System;

namespace punteros
{
    class Program
    {
        static void Main(string[] args)
        {                     
            unsafe
            {

                int[] datos = { 10, 20, 30 };

                Console.WriteLine("Leyendo el segundo dato...");
                fixed (int* posicionDato = &datos[1])
                {
                    Console.WriteLine("En posicionDato hay {0}", (int)posicionDato);
                }

                Console.WriteLine("Leyendo el primer dato...");
                fixed (int* posicionDato = datos)
                {
                    Console.WriteLine("Ahora en posicionDato hay {0}", (int)posicionDato);
                }

                Console.ReadLine();
            }
            Console.ReadKey();

        }
    }
}


Comentarios

Entradas populares