<div dir="ltr">Hola Marcelinux,<div><br></div><div>Para el primer caso, sí podrías definir el tipo de dato completamente. Por ejemplo,</div><div><br></div><div>typedef int * (*tipo_array_ptr_puntero)[7];</div><div><br></div><div>

<span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">tipo_array_ptr_puntero</span>  ptr;</div><div><br></div><div>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:<br><br>ptr = new tipo_array_ptr_puntero;</div><div><br></div><div>El operador 'new' necesita el tipo: 'int * [7]', que es el tipo del dato apuntado.<br><br>Lo que podríamos hacer es crear dos tipos de datos en una sola sentencia 'typedef'. Por ejemplo,</div><div><br></div><div>

<div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial">typedef int * tipo_array_ptr[7], * tipo_array_ptr_puntero;</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">tipo_array_ptr_puntero </span> ptr;</div><br class="gmail-Apple-interchange-newline">



<span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">ptr = new tipo_array_ptr;</span><br></div><div><br><br>Para 

<span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">el último caso, t</span>ienes 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.</div><div><br></div><div><br></div><div>Espero haber aclarado las dudas.</div><div><br></div><div>Steven</div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote">2018-03-03 2:32 GMT-05:00 marcelinux <span dir="ltr"><<a href="mailto:marcelinator@gmail.com" target="_blank">marcelinator@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">El pasado 2018-03-02 14:54:38, Steven Davidson escribió:<br>
<br>
SD> Hola Marcelinux,<br>
SD> 1. Como ya sabes, sintácticamente un puntero se define con un astersico y<br>
SD> ...<br>
SD> usar 'typedef' para aclararnos; esto es,<br>
SD> typedef int * tipo_array_ptr[7];<br>
SD> tipo_array_ptr *ptr;<br>
SD> Esto es definitivamente mejor cuando queremos crear memoria dinámicamente<br>
SD> usando 'new' o 'new[]'; por ejemplo,<br>
SD> ptr = new tipo_array_ptr[100];<br>
<br>
De acuerdo. Entonces, ¿debo hacerlo en "dos veces"?<br>
¿Podría hacerse con un único typedef *(int *)[7] tipo_array_ptr  ?<br>
¿Para usar tipo_array_ptr puntero?<br>
puntero = new tipo_array_ptr;<br>
puntero[0] = &entero[0];<br>
Creo que es demasiado anidamiento para mí (de momento).<br>
<br>
SD> 2. Esto no tiene mucho misterio. Solamente necesitas ir poco a poco:<br>
SD> array de 8 elementos:<br>
SD> ¿? array[8];<br>
SD> cada elemento es un array de 7 elementos:<br>
SD> ¿? array[8][7];<br>
SD> que a su vez cada elemento es un puntero a 'int':<br>
SD> int * array[8][7];<br>
<br>
typedef int*array[8][7] tipo_array_ptr;<br>
tipo_array_ptr puntero;<br>
puntero[0] = array1;<br>
puntero[1] = array2;<br>
etc.<br>
<br>
<br>
SD> Espero haber aclarado las dudas.<br>
SD> Steven<br>
<br>
Muchísimas gracias.<br>
<div class="gmail-HOEnZb"><div class="gmail-h5"><br></div></div></blockquote><div><br></div></div></div></div>