Analiza kodu -wskaźniki i tablice

0
#include<iostream>
using namespace std;
void f10(int& a, int *b)
{
    a++;
    *b=++a;

};
int main()
{


int a[10]={1,2,3};
int b[10]={3,2,1};
int *w=a;
for(int i=0;i<3;i++,w++)
{
    a[i]+=7;
    b[i]+=7;
    if(*w<2)
        f10(a[i],w);
    else f10(b[i],w);
    cout<<*(a+i)<<" "<<*(b+i)<<endl;
}
} 

Otóż mam następujący problem nie wiem skąd i w jaki sposób są wykonywane poszczególne instrukcje

  1. int *w=a; - w tym miejscu inicjalizuje wskaźnik w i ładuje do niego obiekt a?
    2.if(*w<2) co jest dokładnie przyjmowane za obiekt *w i która instrukcja zostanie wykonana w pierwszym obiegu pętli if(*w<2) f10(a[i],w); czy też może else f10(b[i],w);?
  2. co dokładnie jest wykonywane w instrukcji f10(a[i],w); co np jest przyjmowane przez w?
    4.o co chodzi dokładnie w instrukcji cout<<(a+i)<<" "<<(b+i)<<endl; ?
1

Ad 1. "inicjalizuje wskaźnik" == "ładuje do niego obiekt" - deklaruje wskaźnik, ładuje adres pierwszego elementu z a
Ad 2. *w - element na który wskazuje w, zawartość wskaźnika, dereferencja.
Ad 3. dokładnie to co napisano w funkcji, za w jest przejmowane w które zostaje przekazane do funkcji jako b, jako a przyjmowane a[i]
Ad 4. wyświetlenie dwóch elementów - demonstrujący że nazwę tablicy można traktować jako wskaźnik na pierwszy element i na niej działają prawie wszystkie operacje wskaźnikowe.

2

http://cpp0x.pl/kursy/Kurs-C++/Wskazniki/304

Tu w zasadzie wszystkiego sie dowiesz.

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