Wypisywanie tablicy przez wskazniki

0

Jak wypisać elementy tablicy przez wskazniki? Chodzi mi o ostatnia funkcje .Mam skopiowac zawartosc tablicy tab do wskaznikowej. Kompilator nie wypisuje mi elementów, co mam zle?. Tablica na indeksach wyswietla elementy poprawnie .

#include <stdio.h>
#define ROZMIAR 5
void funkcjaindex(const int tab[], int indeksowa[], int n);
void funkcjawskaznik(int *tab[], int *wskaznikowa[], int n);
int main()
    {
    int glowna[ROZMIAR]={5,2,3,4,5};
    int indek[ROZMIAR];
    int wskaz[ROZMIAR];
    funkcjaindex(glowna,indek,ROZMIAR);
    printf("Odstep \n");
    funkcjawskaznik(glowna,wskaz,ROZMIAR);
    return 0;
    }

void funkcjaindex(const int tab[], int indeksowa[], int n)
    {
    int licznik;
    for(licznik=0;licznik<n;licznik++)
        {indeksowa[licznik]=tab[licznik];
        printf("Element %d to %d\n",licznik+1,indeksowa[licznik]);
        }
    }
void funkcjawskaznik( int *tab[], int *wskaznikowa[], int n)
    {
        while(*tab++=*wskaznikowa++)
        {
        *wskaznikowa=*tab;
        printf("%d \n",*wskaznikowa);
        }

    }

0

Em, raczej:
void funkcjawskaznik( int *tab, int *wskaznikowa, int n)

  • nie jestem pewien cd.warunku tej pętli while, ale wygląda mi na błędny
1
int *tab[];

Zgadnij, co to jest. Tablica wskaźników, a chyba nie o to chodzi.

while(*tab++=*wskaznikowa++);

Natomiast to oznacza:

while(*wskaznikowa)
{
   *tab = *wskaźnikowa;
   tab++; wskaznikowa++;
}

Wartość wyrażenia (a=b) odpowiada wartosci (b).
Zatem Twoja funkcja wygląda tak:

  while(*wskaznikowa)
  {
    tab++; wskaznikowa++;
    *wskaznikowa=*tab;
    *tab = *wskaznikowa;
    printf("%d \n",*wskaznikowa);
  }

Widzisz tu jakiś sens? Jeśli tak, to mnie oświec. Na przyszłość polecam nie utrudniać sobie życia.
http://pl.wikipedia.org/wiki/KISS_(reguła)
Domyślam się, ze n jest długoscią tablicy. Takiej wartosci potrzebujesz, bo skąd komputer ma wiedziec, czy smieci za tablicą w pamięci nalezą do tablicy? A może to nie śmieci?
"Ludzka" funkcja:

void f(int *tab, int *wskaznikowa, const int n)
{
  for(int i = 0; i<n; ++i)
  {
    *(wskaznikowa+i) = *(tab+i);
    printf("%d \n",*(wskaznikowa+i));
  }
  return;
}

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