Sunteți pe pagina 1din 3

14/3/2014

Tipos de puntero (Gua de programacin de C#)

Este artculo proviene de un motor de traduccin automtica. Mueva el puntero sobre las
frases del artculo para ver el texto original. Ms informacin.

Traduccin

Original

Tipos de puntero (Gua de programacin de


C#)
Visual Studio 2013

Este tema an no ha recibido ninguna valoracin

En un contexto no seguro, un tipo puede ser un tipo de puntero, un tipo de valor o un tipo de referencia. Una declaracin
de tipos de puntero adopta una de las formas siguientes:

type* identifier;
void* identifier; //allowed but not recommended
Cualquiera de los tipos siguientes puede ser un tipo de puntero:
sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal o bool.
Cualquier tipo de enum.
Cualquier tipo de puntero (pointer).
Cualquier tipo de struct definido por el usuario que slo contenga campos de tipos no administrados.
Los tipos de puntero no se heredan de object y no existe ninguna conversin entre tipos de puntero y object. Adems, las
conversiones boxing y unboxing no admiten punteros. Sin embargo, puede realizar conversiones entre diferentes tipos de
puntero y entre tipos de puntero y tipos enteros.
Cuando declare varios punteros en la misma declaracin, nicamente debe escribir * junto al tipo subyacente, no debe
escribirse como prefijo en cada nombre de puntero. Por ejemplo:

int* p1, p2, p3; // Ok


int *p1, *p2, *p3; // Invalid in C#
Un puntero no puede sealar a una referencia o a una struct que contenga referencias porque es posible que la referencia
a un objeto pueda recolectarse como elemento no utilizado aunque haya un puntero que la seale. GC no controla si hay
tipos de punteros que apuntan a un objeto.
El valor de la variable de puntero de tipo myType*es la direccin de una variable de tipo myType. A continuacin se
muestran ejemplos de declaraciones de tipos de puntero:
Ejemplo

Descripcin

int* p

p es un puntero a un entero

int** p

p es un puntero a un puntero o a un entero

http://msdn.microsoft.com/es-es/library/y31yhkeb(d=printer).aspx

1/3

14/3/2014

Tipos de puntero (Gua de programacin de C#)

int** p

p es un puntero a un puntero o a un entero

int*[] p

p es una matriz unidimensional de punteros a enteros

char* p

p es un puntero a un valor char

void* p

p es un puntero a un tipo desconocido

El operador de direccionamiento indirecto de puntero * puede utilizarse para tener acceso al contenido de la ubicacin
sealada por la variable de puntero. Por ejemplo, en la siguiente declaracin:

int* myVariable;
la expresin *myVariabledenota la variable int que se encuentra en la direccin contenida en myVariable.
No se puede aplicar el operador de direccionamiento indirecto a un puntero de tipo void*. Sin embargo, es posible
utilizar una conversin de tipos para convertir un puntero de tipo void en cualquier otro tipo de puntero y viceversa.
Un puntero puede ser null. La aplicacin del operador de direccionamiento indirecto a un puntero nulo (null) da como
resultado un comportamiento definido segn la implementacin.
Tenga en cuenta que el paso de punteros entre mtodos puede provocar un comportamiento no definido. Un ejemplo es
la devolucin de un puntero a una variable local a travs de un parmetro Out o Ref, o como resultado de la funcin. Si el
puntero se estableci en un bloque fijo, es posible que la variable a la que apunta ya no pueda ser fija.
La tabla siguiente muestra los operadores e instrucciones que pueden funcionar sobre punteros en un contexto no seguro:
Operador/instruccin

Utilice

Realiza el direccionamiento indirecto del puntero.

->

Obtiene acceso a un miembro de un struct a travs de un puntero.

[]

Indiza un puntero.

&

Obtiene la direccin de una variable.

++ y --

Incrementa y reduce los punteros.

+y-

Realiza la aritmtica con punteros.

==, !=, <, >, <= y >=

Compara los punteros.

stackalloc

Asigna memoria en la pila.

fixed (Instruccin)

Fija provisionalmente una variable para que pueda encontrarse su direccin.

Especificacin del lenguaje C#


Para obtener ms informacin, vea la Especificacin del lenguaje C#. La especificacin del lenguaje es la fuente definitiva
de la sintaxis y el uso de C#.
http://msdn.microsoft.com/es-es/library/y31yhkeb(d=printer).aspx

2/3

14/3/2014

Tipos de puntero (Gua de programacin de C#)

Vea tambin
Referencia
Cdigo no seguro y punteros (Gua de programacin de C#)
Conversiones de puntero (Gua de programacin de C#)
Expresiones de puntero (Gua de programacin de C#)
unsafe (Referencia de C#)
fixed (Instruccin, Referencia de C#)
stackalloc (Referencia de C#)
Conversin boxing y unboxing (Gua de programacin de C#)

Conceptos

Gua de programacin de C#

Otros recursos

Tipos (Referencia de C#)

Adiciones de comunidad
2014 Microsoft. Reservados todos los derechos.

http://msdn.microsoft.com/es-es/library/y31yhkeb(d=printer).aspx

3/3

S-ar putea să vă placă și