Stackoverflow array

0

Czy jest to prawidłowa interpretacja tego zapisu ? (probowalem z strony angielskiej sie dowiedziec.. niestety moj angielski mi na to nie pozwolil)

int (&p2)[3] = b;

Jest to referencja do pierwszych 3 elementow tablicy wielowymiarowej b ?

int b[2][3];   

Jakby ktoś mógł od siebie coś dodać byłbym bardzo wdzięczny bardzo, by mi to pomogło

0

typy coś się nie zgadzają... tablica referencji(&*) i podwójny wskaźnik (**)

0

Chodziło mi o coś takiego point(const double(&r)[3]) (Mógłbyś mi trochę przybliżyć ten zapis ?) . Na lekcji usłyszałem ze jest to "bezposredni adres do calosci tablicy" ale nie kupuje tego (jakoś dziwnie to dla mnie brzmi) .
Kod

class point {
    double tab[3];

public:
    point() { tab[0] = tab[1] = tab[2] = 0; }
    point(const double(&r)[3])
    {
        tab[0] = r[0];
        tab[1] = r[1];
        tab[2] = r[2];
    }
    point(const double& x, const double& y, const double& z)
    {
        tab[0] = x;
        tab[1] = y;
        tab[2] = z;
    }
};
int main()
{
    double x[2][3] = { { 1.0, 1.0, 1.0 },
        { 1.0, 2.0, 3.0 } };
    point p1(x[0]), p2(x[1]);
    const point p3(0.4, 0.4, .01);
    return 0;
}
 
0

przekazujesz wskaźnik na double zamiast przekazać wartość wskaźnika na double

0
double tab[3]; 

tab nie jest całą tablicą, jest wskaźnikiem na double.

3
Niikelion napisał(a):
double tab[3]; 

tab nie jest całą tablicą, jest wskaźnikiem na double.
Nieprawda. Jedynie w przypadku przekazywania do funkcji, która przyjmuje double* albo double [] nazwa tablicy będzie konwertowana na wskaźnik.

double tab[3]

tablica 3 elementów typu double

double (*tab)[3]

wskaźnik do w.w. tablicy (tab to nazwa wskaźnika, tablica mogła być deklarowana pod inną nazwą)

double (&tab)[3]

referencja do w.w. tablicy

W sumie nigdy się nie spotkałem z tym zapisem w kodzie komercyjnym, ale z praktycznego punktu widzenia to pozwala przekazać tablicę wraz z informacją o ilości elementów: http://stackoverflow.com/a/10008405. Choć szczerze mówiąc prędzej bym przekazał std::array.

0

Bardzo dziekuje :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1