Wątek przeniesiony 2017-07-03 08:20 z C/C++ przez ŁF.

[C] Wynik zawartości tablicy a

0

Wytłumaczy mi ktoś jak mogę wyliczyć elementy:
a[0] =
a[1] =
a[2] =
a[3] =
a[4] =
a[5] =
które są wynikiem poniższego programu? Nie bardzo rozumiem co tutaj się dzieje...


main(){
int a[6] = {1, 2, 3, 4, 5, 6};
ptr = a + 2;
ptr[1] = *ptr +10;
ptr[2] = ptr[0] + 20;
*a = *ptr;
*ptr = a[1];
}
0
[      1,                 2,                 3,             4,          5,         6 ]
        a                 a+1           &a[2]           a+3                           
       ptr[-2]           ptr[-1]         ptr[0]          ptr[1]
//a == &a[0]
//*a == a[0] 
int *ptr = a + 2;  // oznacza że  wskażnik ptr wskazuje na adres 2 elementu tablicy(u ciebie nie  ma takiej deklaracji, wogole nie ma deklaracji ptr)
Niestety najpierw musisz się podstaw nauczyć bo ja też tak miałem i się brałem za złe rzeczy, ty też tak robisz
0

Bo widze że robi to samo co ja, czyli nie nauczyłem się podstaw a robiłem zadania które to wykorzystują
tu jest np. o wskażnikach
http://wazniak.mimuw.edu.pl/index.php?title=Wst%C4%99p_do_programowania_w_j%C4%99zyku_C/Wska%C5%BAniki

0

a[0] = 3
a[1] = 2
a[2] = 2
a[3] = 13
a[4] = 23
a[5] = 6

int main() {
    int a[6] = { 1, 2, 3, 4, 5, 6 };
    int* ptr;
    ptr = a + 2; // do wskaźnika ptr przypisano adres trzeciego elementu tablicy a[2]
    // teraz wskaźnik ptr może poruszać się po tablicy
    ptr[1] = *ptr + 10; // następny element po ptr, czyli a[3] = a[2] + 10 (3 + 10)
    ptr[2] = ptr[0] + 20; // dwa elemnty dalej od ptr, czyli a[4] = a[2] + 20 (3 + 20)
    *a = *ptr; // *a to samo co a[0], czyli a[0] = a[2] (3)
    *ptr = a[1]; // pod adres wsakźnika ptr przypisano wartość a[1] (2)
}

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