Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

wpisanie wartości z tablicy z użyciem wskaźnika

Ostatnio zmodyfikowano 2018-10-22 00:05
Autor Wiadomość
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.


C/C++
#include <stdio.h>
int main()
{
    int a[ 10 ];
    int * wb = & a[ 10 ];
    int i = 0;
    //wypełnienie tablicy (proszę o pomoc, bo nie wiem jak wypełnić tablicę używając wskaźnika)
    for( i = 0; i < 10; i++ )
    {
        a[ i ] = 0 + 1 * i;
    }
   
    // powinno wypisywac tablice, a wypisuje losową liczbe + dodaje do niej 1 w każdym obiegu pętli
    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ć :/
P-172636
pekfos
» 2018-10-21 23:37:37
» Kurs C++ » Poziom 5Wskaźniki lekcja

nie 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.
P-172637
killjoy
» 2018-10-21 23:40:18
C/C++
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).

C/C++
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.
 
P-172638
pekfos
» 2018-10-21 23:42:22
C/C++
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.
P-172639
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:


C/C++
#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ć :)
P-172640
pekfos
» 2018-10-21 23:46:22
Jak zrobisz tak, to nie zadziała
C/C++
*( wb + i ) = 0 + 2 * i;
P-172641
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?
P-172642
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
P-172643
« 1 »
  Strona 1 z 1