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];
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];
Tak, polecam cdecl.org do takich zabaw.
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ą ?
Tak, ale po typie wsk
tego nie powiesz. (tak przy okazji: używanie nagiego new
/delete
jest prawie na pewno błędem)
Co to znaczy nie działa, mnie tam się kompiluje: http://melpon.org/wandbox/permlink/kcdXezRZkIYpdUH1
chodziło mi, że na tej stronie nie działa:
To jak to odczytać:
int (*wsk)[10] = new int[5][10]
Typem wsk
jest wskaźnik na tablicę 10 intów, inicjalizujesz go wskaźnikiem na pierwszą z 5 tablic tablic 10 intów.
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.
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/
Chodziło mi o to aby coś wpisać do pojedyńczych wskaźników.
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;
}
Byłby ktoś w stanie pomóc ? Chodzi o pytanie z poprzedniego postu.
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]
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);