Wskaźniki o deklaracje,definicję

0

Czy ten kod:

int i = 4;
int *wsk = &i;

robi to samo, co ten:

int i = 4;
int *wsk;
wsk = &i;

?

0

tak

0

Ok, dzięki. To jeszcze jedno:

int tab[] = {1,2,3,4};
int *wsk;
wsk = &tab[0];

czy to to samo, co:

int tab[] = {1,2,3,4};
int *wsk;
wsk = tab;

?

3

Nie jest to "to samo" ale efekt będzie taki sam.

0

@Shalom: mozesz wyjaśnić?

1

To nie jest to samo, bo w pierwszym przykładzie najpierw pobierasz pierwszy(zerowy) element tablicy i potem bierzesz na niego wskaźnik. W drugim bierzesz od razu wskaźnik na tablicę, który jest równy, co do wartości, wskaźnikowi na zerowy jej element. Wychodzi na to samo, z tą tylko różnicą że w pierwszym przykładzie "jest więcej akcji do wykonania". Chociaż kompilator i tak zapewne to uprości więc można z tego korzystać zamiennie.

0

Ok, to jeszcze jedno pytanie mam o tablice i wskaźniki:

Te 3 metody wyświetlają mi zawartość tablicy (sprawdzałem, działają), jednak czy na pewno robią to samo? Nigdzie nie przekroczę zakresu, wszystko jest ok:

     for(i=0; i<3; i++)
        printf("tab[i] = %d, ", tab[i]);
     printf("\n");

     for(i=0; i<3; i++)
        printf("*(p++) = %d, ", *p++);
     printf("\n");

     for(i=0; i<3; i++)
        printf("*(p+i) = %d, ", *(p+i));
     printf("\n");
0

Nie do końca.
Środkowa psuje p - więc kolejne odpalenie tego nie będzie poprawne.
Nie podałeś czym jest to twoje p.

0

Jeśli tab i p to to samo, to tak, robią to samo.

0

To powinno byc właściwie tak:

int tab[] = {1,2,3};
int *p = tab;

potem, przed 3-cią pętlą:

p = tab;

teraz ok? :)

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