Dane w tablicy dwuwymiarowej

2012-04-06 17:50
0

Witam. Napisałem sobie taki prosty programik na tablicach i pewna rzecz mnie zdziwiła:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(void)
{
    int tab[2][2] = {1, 2, 3, 4};

    *tab[1] = 10;
    printf("%d ", tab[0][0]);
    printf("%d ", tab[0][1]);
    printf("%d ", tab[1][0]);
    printf("%d ", tab[1][1]);
    printf("%d ", tab[0][2]);
    printf("%d ", tab[0][3]);
    printf("%d", tab[1][2]);
    getchar();
    getchar();
    return 0;
} 

Zadeklarowałem tablicę 2 na 2 i poszczególne elementy tablicy mają indeksy [0][0] [0][1] [1][0] i [1][1] i tutaj rozumiem. Wypełniłem te elementy jakimiś tam danymi. Jednak jak np. próbuję odnieść się do elementów [0][2] i [0][3] to wyświetla mi elementy spod [1][0] i [1][1] czemu tak się dzieje? Przecież nie mam takich indeksów w tablicy. Mimo to wyświetlają mi się dane, a nie wyskakuje błąd jak przy próbie wyświetlenia elementu o indeksie [1][2].

edytowany 2x, ostatnio: olek1, 2012-04-06 17:51

Pozostało 580 znaków

2012-04-06 21:14
1

tak ładniej: int a[2][2] = {{1, 2}, {3, 4}};

tab[a][b] równoważne tab[a*LiczbaKolumn + b]* a nawet (tab + a * LiczbaKolumn +b)**

edytowany 2x, ostatnio: Xitami, 2012-04-06 21:21
masz rację, okazało się, że nie zauważyłem tej linijki *tab[1] = 10; która mi właśnie psuła te wyniki. - maszynaz 2012-04-07 09:12

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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