Usuario: anónimo

Usuarios en línea: 1
Invitados: 1

FAQ

Mensaje

1213m
Re: Declaración e inicialización de punteros y typedef.
M(Steven Davidson) 2018-03-03 16:30:03  H

Hola Marcelinux,

Para el primer caso, sí podrías definir el tipo de dato completamente. Por

ejemplo,

typedef int * (*tipo_array_ptr_puntero)[7];

tipo_array_ptr_puntero  ptr;

El problema vendría a la hora de usar el operador 'new' o 'new[]', ya que

necesitas el tipo del dato apuntado, y no el tipo del puntero. Es decir, lo

siguiente es incorrecto:

ptr = new tipo_array_ptr_puntero;

El operador 'new' necesita el tipo: 'int * [7]', que es el tipo del dato

apuntado.

Lo que podríamos hacer es crear dos tipos de datos en una sola sentencia

'typedef'. Por ejemplo,

typedef int * tipo_array_ptr[7], * tipo_array_ptr_puntero;

tipo_array_ptr_puntero  ptr;

ptr = new tipo_array_ptr;

Para el último caso, tienes que separar las dos sentencias en dos

sentencias. En otras palabras, no puedes declarar una variable y definir un

tipo en una sola sentencia: son dos sentencias diferentes.

Espero haber aclarado las dudas.

Steven

2018-03-03 2:32 GMT-05:00 marcelinux <marcelinator@gmail.com>:

>  El pasado 2018-03-02 14:54:38, Steven Davidson escribió:

>

> SD>  Hola Marcelinux,

> SD>  1. Como ya sabes, sintácticamente un puntero se define con un

>  astersico y

> SD>  ...

> SD>  usar 'typedef' para aclararnos; esto es,

> SD>  typedef int * tipo_array_ptr[7];

> SD>  tipo_array_ptr *ptr;

> SD>  Esto es definitivamente mejor cuando queremos crear memoria

>  dinámicamente

> SD>  usando 'new' o 'new[]'; por ejemplo,

> SD>  ptr = new tipo_array_ptr[100];

>

>  De acuerdo. Entonces, ¿debo hacerlo en "dos veces"?

>  ¿Podría hacerse con un único typedef *(int *)[7] tipo_array_ptr  ?

>  ¿Para usar tipo_array_ptr puntero?

>  puntero = new tipo_array_ptr;

>  puntero[0] = &entero[0];

>  Creo que es demasiado anidamiento para mí (de momento).

>

> SD>  2. Esto no tiene mucho misterio. Solamente necesitas ir poco a poco:

> SD>  array de 8 elementos:

> SD>  ¿? array[8];

> SD>  cada elemento es un array de 7 elementos:

> SD>  ¿? array[8][7];

> SD>  que a su vez cada elemento es un puntero a 'int':

> SD>  int * array[8][7];

>

>  typedef int*array[8][7] tipo_array_ptr;

>  tipo_array_ptr puntero;

>  puntero[0] = array1;

>  puntero[1] = array2;

>  etc.

>

>

> SD>  Espero haber aclarado las dudas.

> SD>  Steven

>

>  Muchísimas gracias.

>

>

_______________________________________________

Lista de correo Cconclase Cconclase@listas.conclase.net

http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net

Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ