Fran3k Temat założony przez niniejszego użytkownika |
wpisanie wartości z tablicy z użyciem wskaźnika » 2018-10-21 23:27:55 Witam, jestem początkujący i zaczynam zabawę ze wskaźnikami. Chcę wypełnić i wyświetlić tablicę z użyciem wskaźnika. Obecnie nie wiem jak wyświetlić zawartość tablicy używając wskaźnika, bo wypisuje mi losową liczbę zamiast pierwszy element tablicy :/ elementy w tablicy to liczby od 0 do 9. #include <stdio.h> int main() { int a[ 10 ]; int * wb = & a[ 10 ]; int i = 0; for( i = 0; i < 10; i++ ) { a[ i ] = 0 + 1 * i; } for( i = 0; i < 10; i++ ) { printf( "%d ", * wb + i ); } }
Prosiłbym o pomoc, bo nie mogłem znaleźć przykładu w internecie, a chciałbym się nauczyć tych podstaw działania na tablicy z użyciem wskaźnika // EDIT: Błąd leżał w linijce: int *wb=&a[10]; Powinno być: int *wb=&a[0]; Prosiłbym o pomoc z wypełenieniem tablicy używając wskaźnika, bo nie wiem jak to zrobić :/ |
|
pekfos |
» 2018-10-21 23:37:37 Wskaźnikinie wiem jak to zrobić :/ |
Dokładnie tak, jak to (mam nadzieję) próbowałeś zrobić, tylko bez błędu składniowego przez który się nie kompilowało. |
|
killjoy |
» 2018-10-21 23:40:18 int a[ 10 ]; int * wb = & a[ 10 ];
W pierwszej linii, tablica z 10 elementami. W drugiej linii pobranie adresu elementu o numerze 11. Już w drugiej linii wychodzisz poza zakres tablicy (tablice indeksuje się od 0). for( i = 0; i < 10; i++ ) { printf( "%d ", * wb + i ); }
Nawet jeżeli w pierwszym skrawku kodu nie wychodziłbyś poza tablicę i pobrał element ostatni, to tu już z pewnością byś za nią wyszedł (konkretnie o 9 elementów). Jeżeli chcesz wypisywać zawartość tablicy jw. to powinieneś iterować od pierwszego elementu, nie ostatniego. |
|
pekfos |
» 2018-10-21 23:42:22 for( i = 0; i < 10; i++ ) { printf( "%d ", * wb + i ); } Nawet jeżeli w pierwszym skrawku kodu nie wychodziłbyś poza tablicę i pobrał element ostatni, to tu już z pewnością byś za nią wyszedł (konkretnie o 9 elementów).
|
Ta pętla nie iteruje po tablicy, więc nie wyjdziesz dalej niż w pierwszym skrawku kodu. |
|
Fran3k Temat założony przez niniejszego użytkownika |
Dziękuję » 2018-10-21 23:44:37 Dziękuję za pomoc. Już poprawiłem wszystkie błędy i udało mi się zrobić wypełnianie tablicy za pomocą wskaźnika. Kod prezentuje się tak: #include <stdio.h> int main() { int a[ 10 ]; int * wb = & a[ 0 ]; int i = 0; for( i = 0; i < 10; i++ ) { *( wb + i ) = 0 + 1 * i; } for( i = 0; i < 10; i++ ) { printf( "%d ", * wb + i ); } }
Działa tak jak chciałem więc chyba nie ma błędu ale jak jest to dajcie znać :) |
|
pekfos |
» 2018-10-21 23:46:22 Jak zrobisz tak, to nie zadziała |
|
Fran3k Temat założony przez niniejszego użytkownika |
» 2018-10-22 00:02:46 nie bardzo wiem co masz na myśli. Sprawdziłem i program się kompiluje ale wartości nadal wypisuje od 0 do 9, a nie 0,2,4,6,8,10 itd
Dlaczego jest to źle napisane? |
|
killjoy |
» 2018-10-22 00:05:02 Z racji, że ja mogłem wprowadzić w błąd w pierwszym poście, podam wskazówkę. Zrób to, czego ja nie zrobiłem wtedy i zerknij tu: Priorytet operatorów |
|
« 1 » |