<div dir="ltr">Hola Marcelinux,<div class="gmail_extra"><br></div><div class="gmail_extra">1. Como ya sabes, 

<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">sintácticamente</span>

un puntero se define con un astersico y un array con una pareja de corchetes. El "problema" es que estos declaradores siguen las reglas de los operadores. Esto implica que las reglas de precedencia y de asociatividad siguen vigentes. Vemos que el declarador [] tiene mayor precedencia que el declarador *.<br><br>Como queremos un puntero de arrays, debemos obligar que el declarador del puntero se realice antes que el declarador de arrays. Para obligar usamos paréntesis; esto es,</div><div class="gmail_extra"><br></div><div class="gmail_extra">¿? (*ptr)[7];</div><div class="gmail_extra"><br></div><div class="gmail_extra">Luego dice que el tipo de cada elemento del array es un puntero a 'int'. Bien, pues ahora agregamos esta parte:<br><br>

<div class="gmail_extra" 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">int * (*ptr)[7];</div></div><div class="gmail_extra"><br></div><div class="gmail_extra">Cuando uno empieza a hacer este tipo de declaraciones complejas, aconsejo usar 'typedef' para aclararnos; esto es,</div><div class="gmail_extra"><br></div><div class="gmail_extra">

<div class="gmail_extra" 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"><div class="gmail_extra" 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];</div></div><br class="gmail-Apple-interchange-newline">



<div class="gmail_extra" 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"><div class="gmail_extra" 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">

<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</span>

</span>
*ptr;</div></div><br class="gmail-Apple-interchange-newline">

Esto es definitivamente mejor cuando queremos crear memoria dinámicamente usando 'new' o 'new[]'; por ejemplo,</div><div class="gmail_extra"><br></div><div class="gmail_extra">ptr = new <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[100];</span></div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">2. Esto no tiene mucho misterio. Solamente necesitas ir poco a poco:<br><br>array de 8 elementos:<br><br>¿? array[8];<br>

<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"><br>cada elemento es un array de 7 elementos:</span></div><div class="gmail_extra"><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"><br></span></div><div class="gmail_extra"><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">¿? array[8][7];</span><br></div><div class="gmail_extra"><br><div class="gmail_extra">

<div class="gmail_extra" 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">que a su vez cada elemento es un puntero a 'int':</span></div><div class="gmail_extra" 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"><br></span></div><div class="gmail_extra" 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">int * array[8][7];</span><br></div><br class="gmail-Apple-interchange-newline">

<br></div><div class="gmail_extra">Espero haber aclarado las dudas.</div></div><div class="gmail_extra"><br></div><div class="gmail_extra">Steven</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Mar 2, 2018 at 3:59 AM, marcelinux <span dir="ltr"><<a href="mailto:marcelinator@gmail.com" target="_blank">marcelinator@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Después de completar el curso propuesto en esta web me he propuesto complementarlo con el libro de Bjarne Stroustrup, The C++ Programming language.<br>
En el capítulo 5 se proponen unos ejercicios, que transcribo.<br>
Me gustaría saber si los he realizado correctamente.<br>
No se me ocurre cómo serían las dos últimas definiciones. Si alguien pudiera<br>
explicarme cómo deberían ser, le estaría muy agradecido.<br>
<code><br>
/* The C++ Programming language<br>
 * Ejercicios del capítulo 5.<br>
 *<br>
 * ej_01        Write declarations for the following:<br>
 *                      a pointer to a character,<br>
 *                      an array of 10 integers,<br>
 *                      a reference to an array of 10 integers,<br>
 *                      a pointer to an array of character strings,<br>
 *                      a pointer to a pointer to a character,<br>
 *                      a constant integer,<br>
 *                      a pointer to a constant integer<br>
 *                      and a constant pointer to an integer.<br>
 *                      Initialize each one.<br>
 *<br>
 * ej_03        Use typedef to define the types:<br>
 *                      unsigned char,<br>
 *                      const unsigned char,<br>
 *                      pointer to integer,<br>
 *                      pointer to pointer to char,<br>
 *                      pointer to arrays of char,<br>
 *                      array of 7 pointers to int,<br>
 *                      pointer to an array of 7 pointers to int<br>
 *                      and array of 8 arrays of 7 pointers to int.<br>
 */<br>
<br>
#include iostream<br>
using namespace std;<br>
<br>
void ej_01()<br>
{<br>
        char c = 'M';<br>
        cout << "char c = " << c << '\n';<br>
<br>
        // a pointer to a character<br>
        char* pc = &c;<br>
        cout << "char* pc = " << pc << " apunta a c = " << *pc << '\n';<br>
<br>
        // an array of 10 integers<br>
        int arr_i[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 32};<br>
        cout << "arr_i[10] ... " << arr_i[0] << '\n';<br>
<br>
        // a reference to an array of 10 integers<br>
        int (&ref_i)[10] = arr_i;<br>
        cout << "ref_i = " << ref_i << " hace referencia a " << ref_i[0] << '\n';<br>
<br>
        // a pointer to an array of character strings<br>
        char* arr_c[] = {"primero",<br>
                                                "segundo",<br>
                                                "tercero"};<br>
        cout << "arr_c[] ... " << arr_c[0] << " .. o .. " << *arr_c << '\n';<br>
<br>
        // a pointer to a pointer to a character<br>
        char** ppc = arr_c;<br>
        cout << "ppc = " << ppc << " que apunta a " << *ppc << '\n';<br>
<br>
        // a constant integer<br>
        const int ci = 356;<br>
        cout << "ci = " << ci << '\n';<br>
<br>
        // a pointer to a constant integer<br>
        const int* pci = &ci;<br>
        cout << "pci = " << pci << " que apunta a " << *pci << '\n';<br>
<br>
        // a constant pointer to an integer<br>
        int ii = 88;<br>
        int *const icons = &ii;<br>
        cout << "icons = " << icons << " que apunta a " << *icons << '\n';<br>
}<br>
<br>
void ej_03()<br>
{<br>
        // unsigned char<br>
        typedef unsigned char uchar_t;<br>
        uchar_t uc = 179;<br>
        cout << "unsigned char 179 se representa con " << uc << '\n';<br>
<br>
        // const unsigned char<br>
        typedef const unsigned char cuchar_t;<br>
        cuchar_t cuc = 179;<br>
        cout << "const unsigned char 179 se representa con " << cuc << '\n';<br>
<br>
        //pointer to integer<br>
        typedef int* pint_t;<br>
        int i = 6;<br>
        pint_t pi = &i;<br>
        cout << "pointer to integer sobre i = 6 está en " << pi << " y contiene " << *pi << '\n';<br>
<br>
        //pointer to pointer to char<br>
        typedef char** ppchar_t;<br>
        char ch1 = 'c';<br>
        char* pch1 = &ch1;<br>
        ppchar_t ppch1 = &pch1;<br>
        cout << "pointer to pointer to char está en " << ppch1<br>
                << " y contiene " << *ppch1<br>
                << " que es, a su vez " << **ppch1 << '\n';<br>
<br>
        // pointer to arrays of char --->>> es equivalente a pointer to pointer to char<br>
<br>
        //array of 7 pointers to int<br>
        int i7_1, i7_2, i7_3, i7_4, i7_5, i7_6, i7_7;<br>
        i7_7 = i7_6 = i7_5 = i7_4 = i7_3 = i7_2 = i7_1 = 101;<br>
        typedef int* pint7_t;<br>
        pint7_t i7[7] = {&i7_1, &i7_2, &i7_3, &i7_4, &i7_5, &i7_6, &i7_7};<br>
        cout << "array of 7 pointers to int: " << i7[0] << " => " << *i7[0]<br>
                        << ", " << i7[1] << " => " << *i7[1]<br>
                        << ", " << i7[2] << " => " << *i7[2]<br>
                        << ", " << i7[3] << " => " << *i7[3]<br>
                        << ", " << i7[4] << " => " << *i7[4]<br>
                        << ", " << i7[5] << " => " << *i7[5]<br>
                        << ", " << i7[6] << " => " << *i7[6] << '\n';<br>
<br>
        //pointer to an array of 7 pointers to int<br>
<br>
        //array of 8 arrays of 7 pointers to int<br>
}<br>
<br>
int main()<br>
{<br>
        ej_01();<br>
        ej_03();<br>
        return 0;<br>
}<br>
</code></blockquote><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> </blockquote></div></div></div>