wskaźniki do tablic

0

TO będzie wskaźnik na tablicę 10-elementową?

int (*tab)[10]

Natomiast to to już 10 elementowa tablica wskaźników?:

int *tab[10];
1

Tak, polecam cdecl.org do takich zabaw.

0

taki kod, już tam nie działa:

int (*wsk)[10] = new int[5][10]

można powiedzieć, że wtedy to jest tablica składająca się z 5 wskaźników, który każdy jest na tablicę 10 elementową ?

0

Tak, ale po typie wsk tego nie powiesz. (tak przy okazji: używanie nagiego new/delete jest prawie na pewno błędem)

0

Co to znaczy nie działa, mnie tam się kompiluje: http://melpon.org/wandbox/permlink/kcdXezRZkIYpdUH1

0

chodziło mi, że na tej stronie nie działa:

http://cdecl.org/

To jak to odczytać:

int (*wsk)[10] = new int[5][10]
0

Typem wsk jest wskaźnik na tablicę 10 intów, inicjalizujesz go wskaźnikiem na pierwszą z 5 tablic tablic 10 intów.

0

Mógłbyś pokazać jak wygląda przykładowa inicjalizacja?

Czy można znaleźć gdzieś z tłumaczeniem właśnie takie trudniejsze trochę przykłady z tymi wskaźnikami. Bo w większości artykułów tłumaczone są tylko podstawy o wskaźnikach.

0

Inicjalizacja wygląda dokładnie tak jak ją zapisałeś.

http://www.c-faq.com/decl/spiral.anderson.html tutaj jest ogólny algorytm, ale od czytania tego chce się wydłubać oczy. Lepiej używać aliasów/typedefów.

Możliwe, że Cię zainteresuje: https://dev.krzaq.cc/post/readable-function-pointers/

0

Chodziło mi o to aby coś wpisać do pojedyńczych wskaźników.

0

Aby się upewnić jeszcze raz się spytam, ten kod:

int (*wsk)[10] = new int[5][10]

oznacza, że

wsk jest to wskaźnik na tablicę 10 intów
, ale tych wskaźników wsk jest 5?

Jak wpisać dane np. do kilku wskaźników ?

Chciałem na początek stworzyć wskaźnik na tablicę 10 elementową, ale przy odczycie danych ze wskaźnika pojawia się adres komórki, prawdopodobnie źle wpisuje dane. Jak to powinno wyglądać prawidłowo ?:

int main()
{
    int tablica[10] = {1,2,3,4,5,6,7,8,9,10};

    int (*tab)[10];
    tab = &tablica;

    cout << *(tab);

    return 0;
}
0

Byłby ktoś w stanie pomóc ? Chodzi o pytanie z poprzedniego postu.

0

I na co to ma pokazywać ?
int (*tab)[10];
Skoro chcesz pokazywać na tablicę 10 ele to MUSISZ wskazać na jeden z jej elementów najlepiej zerowy (index 0).
Jak wiadomo, nazwa tablicy jest jednocześnie adresem na jej pierwszy element więc robiąc &tablica pobierasz adres.

Musisz zrobić coś w rodzaju:

 
int *wsk = NULL;
    for(i = 0; i < 10; i++) {
        tab[i] = i*i;
    }
    wsk = tab;
    for(i = 0; i < 10; i++)   printf("ELEMENT NR %d ma wartosc %d\n", i, *(wsk+i));

zamiast *(wsk+i) możesz użyć rozwiązania tablicowego wsk[i]

0

w tym przykładzie pokazałeś jak działa jeśli chcemy do wskaźnika wpisać adres tablicy i później się nim posługiwać. A to już wcześniej wiedziałem. Spytałem się jeśli mam zapis:

 int (*tab)[10];

To jak później odczytywać wartości z tego wskaźnika, bo ten sposób nie działa:

int tablica[10] = {1,2,3,4,5,6,7,8,9,10};
 
    int (*tab)[10];
    tab = &tablica;
 
    cout << *(tab);

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