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

Tablica dwu wymiarowa w c

Ostatnio zmodyfikowano 2017-08-08 13:24
Autor Wiadomość
adi1525
Temat założony przez niniejszego użytkownika
Tablica dwu wymiarowa w c
» 2017-08-08 12:25:36
Witam, mam problem z wypisywaniem tablicy wskaźników, gdy podaje tablicę jako argument funkcji console() to pokazuje mi pierwszą literę drugiego elementu. Gdy chce to samo zrobić bez wywoływania funkcji, tylko za pomocą printf("Wypisz: %c\n",(*++tekst)[0]), dostaje błąd: "|11|error: lvalue required as increment operand|. Szukałem rozwiązania i dalej nie wiem jak mam sformułować *++tekst[0] żeby dostać pierwszą literę drugiego wyrazu.

C/C++
int main( int argc, char * argv[] )
{
    char * tekst[] = { "Styczeń", "luty", "marzec", "kwiecien" };
    //printf("Wypisz: %c\n",(*++tekst)[0]);
    console( tekst );
    return 0;
}
void console( char * tab[] )
{
    printf( "Wypisz: %c\n",( *++tab )[ 0 ] );
}
P-163874
Monika90
» 2017-08-08 12:42:57
najprościej będzie
C/C++
printf( "Wypisz: %c\n", tekst[ 1 ][ 0 ] );
i już.
P-163875
adi1525
Temat założony przez niniejszego użytkownika
» 2017-08-08 12:46:37
No tak też miałem, ale chciałbym się dowiedzieć dlaczego przez argument funkcji to działa a normalnie nie.
P-163876
Monika90
» 2017-08-08 12:57:27
tekst to tablica, a tab to wskaźnik, pomimo że z deklaracji wynikałoby że to tablica. Jak kompilator widzi parametr funkcji postaci T x[] to sobie go zamienia na T* x. Operacja ++ ma sens dla wskaźnika, dla tablicy nie.
P-163877
adi1525
Temat założony przez niniejszego użytkownika
» 2017-08-08 13:24:40
A dobra, już rozumiem. Dzięki ;)
P-163878
« 1 »
  Strona 1 z 1