InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
Tutorial C#
Introduccion a C#
Programacion con C#
Fundamentos de C#
Operadores
Instrucciones
Estrcuturas de control.
Definición de clases
Creación de objetos
Herencia y métodos virtuales
Polimorfismo
Ocultación de miembros
Miembros de tipo
Encapsulación
Espacios de nombres
Importación de espacios de nombres
Espacio de nombres distribuidos
Variables y tipos de datos
Tablas unidimensionales
Tablas multidimensionales
La clase System.Array
Cadenas de texto
Constantes
Orden de inicialización de variables
Métodos
Métodos externos
Constructores
Destructores
Propiedades
Indizadores
Redefinición de operadores
Delegados y eventos
La clase MulticastDelegate
Llamadas asíncronas
Implementación interna de los delegados
Eventos
Estructuras
Boxing y unboxing
Constructores de estructuras
Enumeraciones
Interfaces
Excepciones
Otras instrucciones
Atributos
Definición de nuevos atributos
Lectura de atributos en tiempo de ejecución
Atributos de compilación
Pseudoatributos
Código inseguro
Definición de punteros
Manipulación de punteros
Operadores relacionados con código inseguro
Fijación de variables apuntadas
Novedades de C# 2.0
Genéricos
Tipos parciales
Iteradores
Mejoras en la manipulación de delegados
Tipos anulables
Modificadores de visibilidad de bloques get y set
Clases estáticas
Referencias a espacios de nombres
Supresión temporal de avisos
Atributos condicionales
Incrustación de tablas en estructuras
Modificaciones en el compilador
También puedes ver ...
SubVersion y Visual Studio
Encriptación con AES Rijndael - Ejemplo
TripleDES - Un ejemplo practico en C#
Insertar una marca de agua en documentos PDF
Serialización: XmlSerializer y BinaryFormater
Handler para manipular imagenes
Conversiones de tipos personalizadas (VB y C#)
Compresión por gzip y deflate
La página Web que está abriendo contiene tanto elementos seguros como no seguros.
Cómo insertar un fichero .xml en un campo de tipo XML de SQL server 2005 o 2008


Definición de punteros

    Para definir una variable puntero de un determinado tipo se sigue una sintaxis parecida a la usada para definir variables normales sólo que al nombre del tipo se le postpone un símbolo de asterisco (*) O sea, un puntero se define así:


<tipo> * <nombrePuntero>;

    Por ejemplo, una variable puntero llamada a que pueda almacenar referencias a posiciones de memoria donde se almacenen objetos de tipo int se declara así:


int * a;

    En caso de quererse declarar una tabla de punteros, entonces el asterisco hay que incluirlo tras el nombre del tipo pero antes de los corchetes. Por ejemplo, una tabla de nombre t que pueda almacenar punteros a objetos de tipo int se declara así:


int*[]  t;

    Hay un tipo especial de puntero que es capaz de almacenar referencias a objetos de cualquier tipo. Éstos punteros se declaran indicando void como <tipo>. Por ejemplo:


void * punteroACualquierCosa;

    Hay que tener en cuenta que en realidad lo que indica el tipo que se dé a un puntero es cuál es el tipo de objetos que se ha de considerar que se almacenan en la dirección de memoria almacenada por el puntero. Si se le da el valor void lo que se está diciendo es que no se desea que se considere que el puntero apunta a ningún tipo específico de objeto. Es decir, no se está dando información sobre el tipo apuntado.

    Se pueden declarar múltiples variables locales de tipo puntero en una misma línea. En ese caso el asterisco sólo hay que incluirlo antes del nombre de la primera. Por ejemplo:


int * a, b; // a y b son de tipo int * No sería válido haberlas definido como int *a, *b;

    Hay que tener en cuenta que esta sintaxis especial para definir en una misma definición varios punteros de un mismo tipo sólo es válida en definiciones de variables locales. Al definir campos no sirve y hay que dar para cada campo una definición independiente.

    El recolector de basura no tiene en cuenta los datos a los que se referencie con punteros, pues ha de conocer cuál es el objeto al referenciado por cada variable y un puntero en realidad no tiene porqué almacenar referencias a objetos de ningún tipo en concreto. Por ejemplo, pueden tenerse punteros int * que en realidad apunten a objeto char, o punteros void * que no almacenen información sobre el tipo de objeto al que debería considerarse que apuntan, o punteros que apunte a direcciones donde no hayan objetos, etc.

     Como el recolector de basura no trabaja con punteros, no es posible definir punteros de tipos que se almacenen en memoria dinámica o contengan miembros que se almacenen en memoria dinámica, ya que entonces podría ocurrir que un objeto sólo referenciado a través de punteros sea destruido por considerar el recolector que nadie le referenciaba. Por ello, sólo es válido definir punteros de tipos cuyos objetos se puedan almacenar completamente en pila, pues la vida de estos objetos no está controlada por el recolector de basura sino que se destruyen cuando se abandona el ámbito donde fueron definidos.

    En concreto, los únicos punteros válidos son aquellos que apunten a tipos valor básicos, enumeraciones o estructuras que no contengan campos de tipos referencias. También pueden definirse punteros a tipos puntero, como se muestra en el siguiente ejemplo de declaración de un puntero a punteros de tipo int llamando punteroApunteros:


int ** punteroApunteros;

    Obviamente la anidación puede hacerse a cualquier nivel de profundidad, pudiéndose definir punteros a punteros a punteros, o punteros a punteros a punteros a punteros, etc.


Inicio | Tutorial C# Código inseguroTutorial C#Manipulación de punteros Versión para imprimir Foros de consulta

 
nada... por Anónimo
Respuesta recibida el [01/12/2009 02:48:05]
nada


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial C# Código inseguroTutorial C#Manipulación de punteros Versión para imprimir

Definición de punteros
Autor: José Antonio González Seco
Visitas: 15422 Fecha de publicación: 04/12/2006
José Antonio es experto en tecnologias Microsoft. Imparte cursos y conferencias en congresos sobre C# y .NET en Universidades de toda España (Sevilla, Barcelona, San Sebastián, Valencia, Oviedo, etc.) en representación de grandes empresas como Microsoft.




Visitas: 76 | Comentarios: 2 | Archivo: Articulos
02/02/2010 iPad vs Telesketch
Visitas: 783 | Comentarios: 2 | Archivo: Articulos
Categorias: Humor
Visitas: 706 | Comentarios: 3 | Archivo: Articulos
Visitas: 3090 | Comentarios: 2 | Archivo: Articulos
Categorias: C#
Visitas: 14444 | Comentarios: 7 | Archivo: Articulos
Categorias: C#|Seguridad
Visitas: 1456 | Comentarios: 3 | Archivo: Articulos
Visitas: 686 | Comentarios: 2 | Archivo: Articulos
Visitas: 366 | Comentarios: 0 | Archivo: Articulos
Visitas: 1965 | Comentarios: 2 | Archivo: Articulos
Categorias: C#

Útimos temas recibidos en los foros ...
Web Services Con Power Builder por Saul ... [Power Builder] 22 13/06/2006
fondo de pensiones por leidyuth ... [Visual Basic 6.0] 0 09/03/2010
como bajar el certificado de pensiones y cesantias por Jaqueline ... [Actualidad] 1 09/03/2010
certificado de pensiones del bbva horizonte por danger ... [Actualidad] 115 12/01/2010
certificado de pensiones horizonte por carla ... [Actualidad] 18 16/02/2010
certificado por arme ... [Actualidad] 0 09/03/2010
certificación por Gemelo ... [Actualidad] 0 09/03/2010
CERTIFICADODE PENSIONES Y CESANTIAS SANTANDER Y FAMISANAR CAFAM COMO PUEDO CANSEGUIRLOS por pacho ... [Actualidad] 4 07/03/2010
certificado de pensiones y cesantias por mono ... [Actualidad] 1 09/03/2010
certificado del fondo de pensiones cc 10.491.465 santander de Q. por carlos andres cifuentes banguero ... [Actualidad] 7 17/02/2010
auxiliar administrativa por muñeca ... [Actualidad] 0 09/03/2010
certificado de aportes a pension por tata ... [Actualidad] 0 09/03/2010

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
01/07/2008 LinQ To SQL - Un ejemplo sencillo
24/05/2007 Tipos de datos en Transact SQL    forma parte de...Tutorial de Transact SQL
19/09/2007 Triggers en Transact SQL    forma parte de...Tutorial de Transact SQL
28/06/2006 Procedimientos almacenados en PL/SQL    forma parte de...Tutorial PL/SQL
08/09/2007 Funciones en Transact SQL    forma parte de...Tutorial de Transact SQL
16/04/2007 Mantener variables de Sesión y Aplicación de forma permanente en ASP.net
19/10/2005 Una clase sencilla para encriptar cadenas de texto.
02/09/2007 Procedimientos almacenados en Transact SQL    forma parte de...Tutorial de Transact SQL
03/10/2006 Polimorfismo    forma parte de...Tutorial C#
14/07/2007 Como encriptar texto y variables usando algoritmos estandard como DES o TRIPLEDES

 

Encuesta
¿A que perfil te adaptas mejor?




[Ver] [Votar]